Problem kod srednje vrednosti u zadatku

Problem kod srednje vrednosti u zadatku

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

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!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Na brzaka bih rekao da je problem u ovome
SrednjaOcena = 0;
i dva reda ispod, ti stalno racunas i resetujes, a promenljivu 'na' ne resetujes.(doduse i ne treba, ali ne treba ni ovo Smile )

Pravilno bi bilo:
Izvan petlje definicses promenljivu zbir npr. i stavis je na nula, i imas onu promenljivu 'na' koja broji ocene koliko sam skapirao(daj im malo lepsa imena Smile )
U petlji dodajes na zbir trenutnu ocenu, a na kraju PRE STAMPANJA izracunas srednju vrednost.



Ko je trenutno na forumu
 

Ukupno su 981 korisnika na forumu :: 41 registrovanih, 6 sakrivenih i 934 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, bojan_t, bokisha253, BORUTUS, Bubimir, darkojbn, Dimitrije Paunovic, gomago, Hans Gajger, ILGromovnik, ivan1973, Još malo pa deda, krkalon, Kubovac, kybonacci, ladro, Leonov, lord sir giga, Lošmi, mercedesamg, mile09, milenko crazy north, Milometer, moldway, naki011, panzerwaffe, pedja.st, procesor, proka89, Silvertooth, stegonosa, uruk, virked, Vlada1389, vladaa012, vobo, voja64, wizzardone, x9, ZetaMan