C++ a 2D pole a známky žáků
Zdravím mám takový malý problém. Za úkol jsem dostal abych vytvořil 2d pole do kterého se vypíšou známky žáků a spočítá se z toho průměr a pak se spočítá celkový průměr známek všech žáků. Můj problém je že mě to vypíše vždycky nějaký blbosti místo toho aby známky udělali průměr a zbytek mě vypíše nějaký nesmyslný čísla.Chyby mi to žádný nepíše. Můžete mi někdo pomoct? děkuji
Zde je program:
#include "stdafx.h"
#include "locale"
#include "stdio.h"
void main()
{
setlocale(LC_ALL, "czech");
printf("Dvourozměrné pole \n");
printf("\n");
printf("Vypracoval: ----\n");
printf("\n");
printf("Datum: 15.5. 2013\n");
printf("*****************************\n");
int C;
int M;
int CJ;
int F;
int VYT;
int I;
int J;
int N;
double PR;
double Celprum;
int S;
int CS;
int Z [4][5];
printf("Zadej počet žáků:\n");
scanf("%d",&C);
for(I=1;I<=C;I++){
printf("Zadej známku z ČJ: \n");
scanf("%d",&CJ);
printf("Zadej známku z M: \n");
scanf("%d",&M);
printf("Zadej známku z F: \n");
scanf("%d",&F);
printf("Zadej známku z Vyt: \n");
scanf("%d",&VYT);
Z[C-1][0]=M;
Z[C-1][1]=CJ;
Z[C-1][2]=F;
Z[C-1][3]=VYT;
}
S=0;
CS=0;
printf("Pořadové číslo Mat ČJ Fyz VYT Průměr\n");
for(I=0;I<C;I++){
S=0;
for(J=0;J<=3;J++){
CS=CS+Z[I][J];
S=S+Z[I][J];
}
PR=S/4;
printf("%d, %d, %d, %d, %d, %lf\n",I+1, Z[I][0], Z[I][1], Z[I][2], Z[I][3], PR);
}
Celprum=CS/C;
printf("Celkový průměr: %.2lf\n",Celprum);
getchar();getchar();
}
NIKDO NIC?? :(
Debugger si uz pouzil? Ak ne tak preco ne?
P.S: nazvy premennych pouzivas jak keby si za kazde udretie klavesy musel platit, kto sa v takom programe s jednopismenovymi premennymi ma potom vyznat? A raz ti dojdu pismena :D
som sice len C++ lajk, ale nemalo by byt to pole trosku dynamicke? Co ak bude ziakov viac ako 4?
je blbo. V cykle sa ti predsa meni I a ne C-1
Inac rozmyslajuci clovek napise cyklus ako
for(I=0;I<C;I++)
a potom moze pouzit rovno I na indexovanie pola
my jsme to takhle měli zadané ze školy:
Zadání: Zpracujte VD a program pro výpočet studijních průměrů ve třídě. Užijte dvourozměrné pole.
Vstupní hodnoty:
• C – pořadové číslo žáka
• M, CJ, F, VYT – známky z předmětů: Double
Pracovní proměnné:
• I,J – parametry cyklu (počítadlo)
• N – počet žáků
• PR – studijní průměr žáka
• Celprum – celkový průměr ve třídě
• S –součet známek jednoho žáka
• CS – celková suma známek všech žáků ve třídě
Výstupní hodnoty:
• Z = 2 rozměrné tabulka se známkami žáků a jejich průměry
ono to v podstatě funguje jen mě to nespočítá ty průměry a debuger používám
Cital si co som pisal vyssie alebo co teraz este nefunguje?
Ked pouzivas debugger tak si skontroluj hodnoty v tom poli po zadavani hodnot.
A u printf ked mas parameter double tak sa pouziva %f a ne %lf.
nás ve škole učili %lf u double
tak vas ucili blbo. Najdi si akekolvek printf reference, na google je toho milion. Napr.
Printf_format_string
%f ma parameter typu double. %lf vpodstate neexistuje. A %Lf v novsich prekladacoch potom bere long double.
Je mozne ze tvoj prekladac %lf zozere, len ta upozornujem ze to MOZE byt problem ptz ak TVOJ tajny prekladac chce long double parameter tak to vypise hovadinu.
A celkovy prumer je
Celprum=CS/(C*4);
ne?
A dalsia vec ked ratas tie priemery tak mas 2 integery a medzi nimi /, ak su oba parametre integery tak sa robi celociselne delenie.
Ked chces delenie realnych cisel tak musis jeden parameter pretypovat na double, alebo ak je konstanta tak pridat za nu .0 cim urobis z toho double konstantu.
takze napr.:
PR=S/4.0;
Celprum=(double)(CS)/(C*4);
apod.
tak to jsem zvědavej jak to dopadne
Když už musíš psát ty svoje hovadiny, necpi to aspoň do starých dotazů.
i starý dotas má právo být vyřešen. ne?
on uz ale vyrieseny bol, alebo myslis ze robi domacu ulohu 2mesiace?
Ty nic neřešíš, jen píšeš hovadiny.
no 2 měsíce to je jedno alespon ty zájemci kteří chtějí také si udělat něco takového tak to alespon budou mít
Á propos když je to vyřešený tak proč tam není ta značka že je to vyřešeno