Imam zadatak da napravim program koji ce da prikuplja ocene sa studentskih testova i da napravi tabelu ocena i da ispise, videcete u programu, ali i da napise srednu vrednost tj. aritmeticku sredinu testa. I ja to sve uradim, ali me aritmeticka sredina zeza, jer ono uzme samo jednu(prvu) ocenu koja se upise i deli se sa onoliko ocena koliko je napisano.
Znaci upsiem 5, 5, 5, 5 i 5 i ono uzme ovu prvu 5 i podeli sa 5 i da 1.00.
Evo kod:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define OPSEG 5
#define BRZNAK 20
int
main()
{
int kofa[OPSEG+1] = {0};
char ulbaf[BRZNAK];
int ocena;
int n, na = 0;
int ocena5 = 0, ocena4 = 0, ocena3 = 0, ocena2 = 0, ocena1 = 0;
float SrednjaOcena;
printf("Unesite ocenu koju je dobio studenat sa testa od 1 do 5:\n");
while(1){
if(gets(ulbaf) == NULL){
fprintf(stderr, "Nepoznata ocena!");
exit(EXIT_FAILURE);
continue;
}
if(!(isdigit(ulbaf[0]))){
putchar('\n');
break;
}
ocena = atoi(ulbaf);
if(ocena >= 1 && ocena <= OPSEG){
++kofa[ocena];
++na;
}
SrednjaOcena = 0;
SrednjaOcena = SrednjaOcena + kofa[ocena];
SrednjaOcena = SrednjaOcena / na;
if(ocena == 5){
++ocena5;
}
else if(ocena == 4){
++ocena4;
}
else if(ocena == 3){
++ocena3;
}
else if(ocena == 2){
++ocena2;
}
else if(ocena == 1){
++ocena1;
}
else{
fprintf(stderr, "Podatak izvan opsega!");
exit(EXIT_FAILURE);
continue;
}
}
printf("\n\nREZULTATI:\nOcena\tBroj");
for(n = 0; n <= OPSEG; ++n){
printf("\n%d\t%d", n, kofa[n]);
}
printf("\n\nSrednja ocena testa je %.2f", SrednjaOcena);
printf("\n%d ucenika je dobilo 5", ocena5);
printf("\n%d ucenika je dobilo 4", ocena4);
printf("\n%d ucenike je dobilo 3", ocena3);
printf("\n%d ucenika je dobilo 2", ocena2);
printf("\n%d ucenika je dobilo 1\n", ocena1);
system("PAUSE");
return EXIT_SUCCESS;
}
Hvala unapred!
|