Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema esercizio C
Forum - C/C++ - problema esercizio C

Avatar
adrian (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/09/2009

Segnala al moderatore
Postato alle 13:06
Giovedì, 03/09/2009
ho un compito da fare ma non riesco ad uscirne fuori. questo e il testo del mio problemma:
scrivere in c un programma che presenti un menu di scelta con le seguenti opzioni:
Carica con funzione random la matrice voti contenente i voti ottenuti da N studenti con numeri compresi tra 0 e 10 dove 0 indica che l'allievo era assente alla verifica.
carica il vettore nomi contenente i nomi degli studenti di una classe.(parallelo alle righe della matrice)
carica il vettore MATERIE contenente le 6 materie dello studente.(parallelo alle colonne della matrice)
Stampa: dato il nome di un allievo stampa materia e voto ottenuto solo per le verifiche in cui era presente.
MAXMEDIAMIN:
dato il nome di una materia trova e restituisce al main il voto massimo, il voto minimo e la media dei voti ottenuti.
INSUFF
stampa l'elenco degli allievi insufficienti(ovviamente non prendendo in considerazione le assenze)
ASSENTI
calcola e restituisce al main la percentuale degli studenti assenti per ogni materia.
RECUPERO
dato il nome allievo e la materia dopo aver verificato se lo studente era insufficiente oppure assente, acquisire il voto ottenuto nella verifica di recupero e sostituirlo al vecchio voto.
UTILIZZARE:
funzioni void e non void
passaggio di parametri byref
vettori di caratteri per i nomi e le materie

vi ringrazzio anticipatamente ... vi prego ho tanto bisogno..

io ho provato ma nn riesco a capoire come devo farlo

Ultima modifica effettuata da pierotofy il 03/09/2009 alle 15:04
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:05
Giovedì, 03/09/2009
Ok ci hai provato... possiamo vedere il codice che hai scritto fino ad ora nei tuoi tentativi? Cosa non capisci esattamente dell'esercizio? Le basi di C c'e' le hai no?


Il mio blog: https://piero.dev
PM Quote
Avatar
adrian (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/09/2009

Segnala al moderatore
Postato alle 15:19
Giovedì, 03/09/2009
allora adesso sono a questo punto:
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"
#include <conio.h>


void carica_nomi(char nomi[], int n);
void carica_voti(int voti[][],int n);


int main(int argc, char *argv[])
{
    
  
    int i=0,j=0,n;
    int voti[n][6];
    char nomi;
    char scelta,esci;
    
    do{
    printf("Menu principale\n");
    printf("INSERIRE LETTERE IN MAIUSCOLO!!!\n");
    printf("===============\n\n");
    
    
    printf("premi(N) per caricare i nomi degli studenti\n");
    printf("premi(C) per caricare i voti degli studenti\n");
    printf("premi(M) per caricare le materie scolastiche");
    printf("premi(S) per stampare i voti di uno studente scelto da lei\n");
    printf("premi(E) per visualizare la media e il voto minimo e massimo di uno studente\n");
    printf("premi(I) per visualizzare gli allievi inssuficienti per ogni materia\n");
    printf("premi(A) per visualizzare la percentuale degli studenti assenti per ogni materia\n");
    printf("premi(R) per sostituire il voto insufficiente dello studente\n");
    printf("premi(F) per uscire dal programma:");

    scelta=getche();
    switch(scelta)
    {
      
      case'N':
       carica_nomi(nomi,n);
       break;
      case'C':
       carica_voti(voti,n);
       break;
              
      
          
              
    }
    
    }while(esci=='f'||esci=='F');
  
  system("PAUSE");    
  return 0;
}

void carica_nomi(char nomi[], int n)
{ int i=0;
     printf("\n");
     printf("inserisci il numero degli studenti:");
     scanf("%d",&n);
    
     for(i=0;i<n;i++)
     {
     printf("inserisci il nome dello studente:");
     nomi=getche();
     printf("\n");
    
     }
}
e fino qua tutto giusto  
e da qui in poi ke non riesco piu a ricordare e cioe fare il caricamento random della matrice
void carica_voti(int voti[][],int n,char nomi[])
{int i=0,j=0,a=0,u=0,ris=0;
srand(time(NULL));
    for(i=0;i<n;i++)
      {
       for(j=0;j<6;j++)
       {
         voti[n][6]=(rand()%9)+1;
       }
       }
for (i=0;i<n;i++)
    {
        printf("%-10s  --->\t ", nomi);
        for (j=0;j<5;j++)
        {
            
            printf("%2d\t", voti[n][6]);
        }
        printf("\n\n");
    }

PM Quote
Avatar
adrian (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/09/2009

Segnala al moderatore
Postato alle 15:38
Giovedì, 03/09/2009
ora ho provato cosi:
void carica_voti(int voti[][],int n)
{
  int i=0,j=0;
  srand(time(NULL));
  for(i=0;i<n;i++)
  {
   for(j=0;j<6;j++)
   {
    
    voti[j]=(rand()%9)+1;
    printf("%d\n,voti[j]");
   }
  
  }
}

pero mi da qsto errore :;
invalid use of array with unspecified bounds

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 2:10
Venerdì, 04/09/2009
La funzione "carica_voti" deve prendere come argomento un puntatore ad un array di puntatori. Ossia un array bidimensionale. Lo puoi passare così:
void carica_voti(int* voti[],int n)
Proprio come la funzione main prende gli argomenti dalla riga di comando.

Però quello non mi sembra l'unico errore... Non credo che il tuo programma funzionerà anche se correggi quello...

Il mio consiglio è di studiarti bene i puntatori, gli array e gli array multidimensionali... Non è un argomento facile in C e bisogna cominciare dalla teoria.

PM Quote