Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    45

    array a due dimensioni in c,contiene i voti dei studenti ma nn fornisce la media

    ciao!!
    Il programma deve essere in grado di calcolare
    i punteggi minimi e massimi e la media per ogni studente.
    Io ho scritto il codice nel seguente modo:
    codice:
    #include<stdio.h>
    #define STUDENT 3
    #define ESAME 4
    /*dichiaro le funzioni*/
    int max(const int voti[][ESAME],int alunni,int esame);
    int min(const int voti[][ESAME],int alunni,int esame);
    double media(const int voti[],int esame);
    void stampa(const int voti[][ESAME]);
    
    /*FUNZIONE PRINCIPALE*/
    int main(void)
    {
    	int alunni=0,esame=0;
    	const int voti [STUDENT][ESAME]={{77,68,86,73},
    						        {96,87,89,78},
        						        {70,90,86,81}};
    
    /*chiamo la funzione stampa*/
    	stampa(voti);
    /*chiamo la funzione media e stampo il risultato*/
    printf("la media dei voti e' %lf\n",media(voti,ESAME));
    /*chiamo la funzione min e stampo il risultato*/
    printf("il voto piu' basso  e' %d\n",min(voti,STUDENT,ESAME));
    /*chiamo la funzione max e stampo il risultato*/
    printf("il voto piu' alto e' %d\n",max(voti,STUDENT,ESAME));
    return 0;
    }
    /*definisco la funzione stampa array*/
    void stampa(const int voti[][ESAME])
    {
    /*dichiaro le variabili*/
    	int i,j;
    
    printf("l'array con i voti dei studenti e'\n");
    /*legge il contenuto dell'array e lo stampa in una tabella*/
    for(i=0;i<3;i++){
    	for(j=0;j<4;j++)
    	printf("%d\t",voti[i][j]);
    	printf("\n");
    }
    
    }
    /*definisco la funzione*/	
    int max(const int voto[][ESAME],int alunni,int esame)
    {
    /*dichiaro le variabili*/
    	int max=60;
    	int i,j;
    /*legge il contenuto dell'array e 
    confronta i voti in modo da stabilire quello più alto*/
    for(i=0;i<alunni;i++){
    	for(j=0;j<esame;j++){
    	if(voto[i][j]>max){
    		max=voto[i][j];
    	  }
       }
    }
    return max;
    }
    /*definisco la funzione*/
    int min(const int voto[][ESAME],int alunni,int esame)
    {
    /*dichiaro le variabili*/
    	int j,k;
    	int min=100;
    	
    /*legge il contenuto dell'array e 
    confronta i voti in modo da stabilire quello più basso*/
    	for(k=0;k< alunni;k++){
    		for(j=0;j<esame;j++){
    		if(voto[k][j]<min){
    			min=voto[k][j];
    		}
    	}
    	}
    return min;
    }
    /*definisco la funzione*/
    double media(const int voti[],int esame)
    {
    /*dichiaro le variabili*/
    	int j;
    	double somma=0;
    /*legge l'array, somma i voti e deve fornire la media*/
    	for(j=0;j<esame-1;j++)
    		somma+=voti[j];
    return  somma/esame;
    }
    non funziona solo la media, dice:
    error C2664: 'media': impossibile convertire il parametro 1 da 'const int [3][4]' a 'const int []'.
    l'array originale è voti[studenti][esame] ma alla funzione media devo solo passare i voti, non capisco come fare!!!
    eg

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Come hai passato l'array dei voti per le altre funzioni, devi farlo per l'ultima ... non capisco perché in questa

    double media(const int voti[],int esame)

    non consideri gli esami ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    45
    considero la riga dei esami per ogni studente per questo passo voti[], perchè mi deve dare la media per il primo,secondo e terzo...
    eg

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma devi passare l'array

    voti [STUDENT][ESAME]

    Non ne esiste un altro.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    45
    non si può passare solo la riga??
    eg

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da egla
    non si può passare solo la riga??
    No, non puoi ...

    Passa l'array e utilizza quello che ti serve ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.