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 895 korisnika na forumu :: 46 registrovanih, 2 sakrivenih i 847 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., Acivi, aleksandarbl, bato, bestguarder, bigfoot, BlekMen, Boris90, BraneS, cemix, darios, Dimitrije Paunovic, Djokislav, gmlale, havoc995, hyla, ILGromovnik, Istman, Ivica1102, Kriglord, Kubovac, kunktator, ljuba, Lubica, mgolub, Misirac, moldway, Ne doznajem se u oružje, nemkea71, NoOneEver Dreams, ObelixSRB, oganj123, Panter, Petar35, RJ, shone34, slonic_tonic, srbijaiznadsvega, t.mile, theNedjeljko, trajkoni018, Viceroy, virked, Vlajman1957, wolf431, šumar bk2