Да се въведат брой ученици и оценките им по даден предмет и да се отпечата:
- средният успех на класа
- най-високата и най-ниската оценка
- броят на отличниците в класа
- номерата на учениците с двойки
Да се въведат брой ученици и оценките им по даден предмет и да се отпечата:
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]
П | В | С | Ч | П | С | Н |
---|---|---|---|---|---|---|
« февр. | ||||||
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Добре и вярно! С някои предложения за оптимизации:
ред 22 – трябва да е след цикъла – няма смисъл да е в него
ред 29 – може да започваш сравнението от елемент 1, защото нулевия вече си присвоил на min и max
И два въпроса:
1) Може ли всичко това да се направи само с един цикъл?
2) Може ли да се направи без използване на масив?
Браво, много добре! Само средният успех няма смисъл да го смяташ в цикъла, защото след всяка итерация го преизчисляваш пак. И не е нужно да се ползва double всичко – реалните типове данни заемат повече памет, операциите с тях са по-бавни и енергоемки, освен това съхраняват приблизителни стойности, а не точни. За малки числа и малък обем информация няма да усетиш разлика, но за много големи ще е от значение.
Благодаря за съветите по задачата, както по първото, така и по второто решение. Честно казано, srar=sum/brocenka; го пляснах отново в цикъла по инерция и се усетих чак след като я публикувах и препрочетох. Относно променливите, незнайно защо, когато декларирам само srar като double а останалите променливи като int, ми дава грешни стойности за средния успех.
int broiu, brotl=0, ocenka, omin=6, omax=0;
double brocenka=0, sum=0, srar;
Това ми оправи проблема, но след дъжд – качулка :)