Да се въведат брой ученици и оценките им по даден предмет и да се отпечата:
- средният успех на класа
- най-високата и най-ниската оценка
- броят на отличниците в класа
- номерата на учениците с двойки
- броят на учениците, които имат дадена оценка, въведена от клавиатурата


С Аля :D
program Project1; var Ocenka: array[1..30] of integer; Br, i, N, suma, min, max, Br2, Br3, Br4, Br5, Br6: integer; sredno: real; begin suma:=0; sredno:=0; min:=7; max:=1; Br2:=0; Br3:=0; Br4:=0; Br5:=0; Br6:=0; Write('Vavedete broi uchenici: '); ReadLn(Br); WriteLn('Vavedete ocenka po Matematika za vseki uchenik'); WriteLn; For i:= 1 to Br do begin Write('Uchenik nomer',i,': '); ReadLn(ocenka[i]); suma:=suma+ocenka[i]; if ocenka[i]<min then min:=ocenka[i]; if ocenka[i]>max then max:=ocenka[i]; if ocenka[i]=2 then Br2:= Br2 +1; if ocenka[i]=3 then Br3:= Br3 +1; if ocenka[i]=4 then Br4:= Br4 +1; if ocenka[i]=5 then Br5:= Br5 +1; if ocenka[i]=6 then Br6:= Br6 +1; end; Sredno:= suma/br; WriteLn; WriteLn('Sumata e: ',suma); WriteLn; Writeln('Sredniqt uspeh na clasa e: ', sredno:1:2); WriteLn; WriteLn('Nai-niskata ocenka e: ',min); WriteLn; WriteLn('Nai-visokata ocenka e: ',max); WriteLn; WriteLn('Broqt na otlichinicite e: ',Br6); WriteLn; For i:= 1 to Br do begin if ocenka[i]=2 then WriteLn('Ucenik nomer: ',i,' ima 2'); end; WriteLn; Write('Broqt na uchenicite s koq ocenka tartite: '); ReadLn(N); Case N of 2:WriteLn('Broqt uchenici s ', N,' sa: ', Br2); 3:WriteLn('Broqt uchenici s ', N,' sa: ', Br3); 4:WriteLn('Broqt uchenici s ', N,' sa: ', Br4); 5:WriteLn('Broqt uchenici s ', N,' sa: ', Br5); 6:WriteLn('Broqt uchenici s ', N,' sa: ', Br6); end; ReadLn; end.Отлично! Трябваше да обясните в коментар в началото защо имаме min:=7; и max:=1; – за някой може да не е ясно. Ето ви и подобрен вариант на тази задача, обяснете го:
program Project1; var Ocenka: array[1..30] of integer; Bro: array[2..6] of integer; Br, i, N, suma, min, max: integer; sredno: real; begin suma:=0; sredno:=0; min:=7; max:=1; for i:= 2 to 6 do Bro[i]:= 0; Write('Vavedete broi uchenici: '); ReadLn(Br); WriteLn('Vavedete ocenka po Matematika za vseki uchenik'); WriteLn; For i:= 1 to Br do begin Write('Uchenik nomer',i,': '); ReadLn(ocenka[i]); suma:=suma+ocenka[i]; if ocenka[i]<min then min:=ocenka[i]; if ocenka[i]>max then max:=ocenka[i]; Inc(Bro[ocenka[i]]); end; Sredno:= suma/br; WriteLn; WriteLn('Sumata e: ',suma); WriteLn; Writeln('Sredniqt uspeh na clasa e: ', sredno:1:2); WriteLn; WriteLn('Nai-niskata ocenka e: ',min); WriteLn; WriteLn('Nai-visokata ocenka e: ',max); WriteLn; WriteLn('Broqt na otlichinicite e: ',Br6); WriteLn; For i:= 1 to Br do begin if ocenka[i]=2 then WriteLn('Ucenik nomer: ',i,' ima 2'); end; WriteLn; Write('Broqt na uchenicite s koq ocenka tartite: '); ReadLn(N); WriteLn('Broqt uchenici s ', N,' sa: ', Bro[N]); ReadLn; end.program project1; var a:array [1..23]of integer; N, i, SumaO :integer; SrUspeh, OtlichenBroi, SlabiBroi, nomerDvoiki:real; nomer, ocenka: integer; begin WriteLn('Vuvedete broya na uchenicite'); ReadLn(N); WriteLn ('Vuvedete ocenkite na tezi uchenici'); SumaO:=0; for i:=1 to N do begin ReadLn (a[i]) ; SumaO:=SumaO + a[i]; end; // sreden uspeh SrUspeh:=0; SrUspeh:=SumaO / N; WriteLn('Sredniya uspeh na tezi uchenici e :',SrUspeh:5:2); // Broi otlichni ocenki OtlichenBroi:=0; for i:=1 to N do begin if a[i] = 6 then OtlichenBroi:= OtlichenBroi + 1; end; WriteLn('Broya na otlichnicite e :',OtlichenBroi:2:0); //Broi slabi ocenki SlabiBroi:=0; for i:=1 to N do begin if a[i] = 2 then begin SlabiBroi:= SlabiBroi + 1; //nomer s dvoiki nomerDvoiki :=i; WriteLn('Nomer s dwoika ', nomerDvoiki:2:0); end end; WriteLn('Broya na slabite ychenici e :',SlabiBroi:2:0); //ychenik-ocenka for i:=1 to N do begin nomer := i; ocenka := a[i]; WriteLn('Nomer ', nomer, ' ima ', ocenka); end; ReadLn; end.Браво, Бубе! Само редове 19, 38, 46 и 47 са ти излишни. И можеш да правиш няколко вида сметки в един цикъл, вместо да обхождаш масива пак и пак. Виж примерно решенията на Вики и Аля. И пиши коментарите на кирилица, все пак по-лесно се чете… Другото е супер. :-)