PDA

Visualizza la versione completa : c, calcolo dei voti degli atleti


fenics
14-05-2014, 11:53
salve a tutti, ho fatto questo programma in c per la verifica di informatica:


#include<stdio.h>

#define ATLETI 5
int main()
{
int vet[ATLETI]={1,2,3,4,5};
int i, p=0, c=0;

printf("Assegna 5 voti\n");

for(i=1; i<=ATLETI; i++)
{
scanf("%8d",&vet[i]);
printf("%s%12s\n","Atleta","Punteggio");
printf("%8d%8d\n",i,vet[i]);

if(vet[i]==p)
{
c=c+1;
}
}
printf("\nIl voto %d e' assegnato %d volte\n",p,c);

return 0;
}


in pratica io (giudice) devo assegnare a 5 atleti i rispettivi punteggi in una gara. Scrivere un programma che mi dica quante volte un punteggio stato assegnato. Ora; io ho fatto tutto correttamente solo che non mi dice le volte esatte che io ho assegnato un punteggio. es: se assegno 5 volte "6" mi dice che il 6 assegnato 1 volta.

fenics
14-05-2014, 12:01
dovrei fare in modo che calcoi solo il numero che presente + volte, tralasciando gli altri

torn24
14-05-2014, 14:21
Non mi pare che tu abbia fatto tutto bene :)
Gli indici degli array partono da 0 , se hai dichiarato un array di 5 elementi , l'indice massimo 4 , e tu inserisci un valore ad indice 5 che non esiste .

-----------------------------------------------------------
Per fare quello che vorresti , dovresti usare pi cicli for , e di un altro array dove memorizzare le occorrenze .

con il primo ciclo richiedi un voto per ogni atleta e lo salvi in vet[5]
col due cicli ANNIDATI conti le occorrenze di ogni voto , e le salvi in un array occorrenze[5]
col l'ultimo ciclo trovi il voto con maggiore occorrenze , e poi stampi i risultati
tenendo conto che se occorrenze[1] il maggiore in voto sar vet[1]

fenics
14-05-2014, 15:51
il secondo ciclo dovrebbe stare sopra all'if in pratica??

torn24
14-05-2014, 16:05
In pratica devi ripensare l'intero programma , perch cosi' non pu fare quello che ti serve ;)

fenics
14-05-2014, 16:09
ok

fenics
14-05-2014, 16:32
mi piaceva quellpo che stampava: atleta 1 vot N, atleta 2, vot N ecc....

Loading