Група ученици от 10а всеки ден голямото междучасие излиза за закуска. Понякога обсъждат кой колко пари за закуска има за деня и дали ще им стигнат за това или онова. Друг път искат да си купят заедно нещо – примерно една голяма пица. Понеже времето през голямото междучасие все пак е малко, а и тях ги мързи да смятат, решили да направят програма, която:
- позволява да се укаже колко души са и колко пари за закуска има всеки
- отпечатва този списък с пари
- отпечатва колко пари имат общо всички и по колко се падат средно на човек
- отпечатва коя е най-малката и най-голямата сума пари за човек
- отпечатва броят на хората с повече от 2 лв.
- по желание: записва тази информация във файл или я прочита оттам


не съм направила точката „по желание“, защото информацията ми е от целочислен и реален тип, тоест не е еднотипна и не може да се сложи в типизан файл, евентуално ще погледна за текстов файл вкъщи
program Project1; var a: array[1..100] of real; i, N, br: integer; obshto, sredno, min, max: real; begin //колко души са и по колко пари има всеки Write('Kolko hora izlizat za zakuska dnes: '); ReadLn(N); WriteLn('Vavedete po kolko pari si nosi vseki.'); for i:=1 to N do begin Write(i, ' - '); ReadLn(a[i]); end; //отпечатване на горната информация WriteLn('Natisnete Enter,za da otpechatate gornata informazia.'); ReadLn; for i:=1 to N do WriteLn(i, ' - ', a[i]:0:2); WriteLn; WriteLn('Natisnete Enter, za da prodalgite.'); ReadLn; //колко пари общо? колко пари средно на всеки? obshto:=0; sredno:=0; for i:=1 to N do obshto:=obshto+a[i]; sredno:=obshto/N; WriteLn('Grupata ot ', N, ' uchenika imat obshto ', obshto:0:2, ' lv.'); WriteLn('Na vseki ot tiah se padat sredno po ', sredno:0:2, ' lv.'); WriteLn; WriteLn('Natisnete Enter, za da prodalgite.'); ReadLn; //минимална и максимална сума min:=a[1]; max:=a[1]; for i:=2 to N do if a[i]<min then min:=a[i] else if a[i]>max then max:=a[i]; WriteLn('Nai-malkata suma e ', min:0:2, ', a nai-goliamata - ', max:0:2); WriteLn; WriteLn('Natisnete Enter, za da prodalgite.'); ReadLn; //хора с повече от 2 лв. br:=0; for i:=1 to N do if a[i]>2 then br:=br+1; WriteLn('Horata s poveche ot 2 lv. sa ', br, ' na broi.'); ReadLn; end.Поздравления! Много добре направено и обяснено и много дружелюбни и ясни съобщения на екрана! :-) А за записа във файл – къде е проблема да запишеш само парите в типизиран файл?
С Аля
program Project1; var Pari: array [1..20] of real; i, Broi: integer; Suma: real; begin Suma:=0; Write('Kolko uchenici otivat za zakuski: '); ReadLn(Broi); WriteLn('Po kolko pari ima vseki?'); for i:= 1 to broi do begin Readln(pari[i]); Suma:=Suma+pari[i]; end; Write('Sumata na parite na vsichki uchenici e: ',Suma:6:2); ReadLn; end.Браво, Вики и Аля, много по-ефективно е докато се въвеждат парите да се смята и сумата. :-)
program Project1; var a:array [1..23]of integer; i, N ,broi :integer; Suma, Min, Max :real; begin WriteLn('Vuvedete broya na uchenicite subirashti pari za zakuska'); ReadLn(N); WriteLn('Vuvedete kolko pari ima wseki uchenik:'); For i:=1 to N do begin ReadLn (a[i]); end; WriteLn('Parite dadeni ot wseki uchenik sa:'); for i:=1 to N do begin WriteLn(a[i]); end; Suma:=0 ; for i:=1 to N do begin Suma:=Suma+a[i]; end; WriteLn('Sumata ot parite e :',Suma:5:2); min:=a[1]; for i:=2 to N do begin if a[i] < min then min:=a[i]; end; WriteLn('Nai-malkata suma pari e:',min:5:2); max:=a[i]; for i:=2 to N do begin if a[i] > max then max:=a[i]; end; WriteLn('Nai-golyamata suma pari e :',max:5:2); broi:=0 ; for i:=1 to N do begin if a[i] > 2 then Broi:=Broi+1 ; end; WriteLn('Broya na uchenicite dali poweche ot 2lv. e :',broi); ReadLn; end.Браво, Бубе! Само за максималната сума няма да работи вярно – опитай с 3-ма ученици и суми 5 2 1, например.
program project1; var a: array[1..36] of Integer; i,N:integer; T:text; function Spisuk(N:integer):integer; begin Assign(T,'spisuk.txt'); Rewrite(T); for i:= 1 to N do begin Writeln('Vavedete pari:'); Readln(a[i]); Write(T,a[i]); end; Writeln('Stop! Vie vavedohte dostatuchno pari'); Close(T); end; function PechatS(N:integer):integer; begin Writeln('Spisuka e: '); for i:= 1 to N do begin Writeln(a[i]); end; Writeln('Tova e vsichko ot spisuka.'); end; function Proverkairezultat(N:integer):integer; var suma,min,max,br:integer; sredno:real; begin min:=a[1]; max:=a[1]; suma:=0; sredno:=0; br:=0; for i:= 1 to N do begin Writeln(a[i]); suma:=suma+a[i]; if min <a> a[i] then max:=a[i]; if a[i] > 2 then br:=br+1; end; sredno:=suma/N; Writeln('Obshto vsichki imat: ',suma,' lv.'); Writeln('Sredno na chovek se pada po: ',sredno:5:2, ' lv.'); Writeln('Nai-malkata suma na chovek e: ',min,' lv.'); Writeln('Nai-golqmata suma na chovek e: ',max,' lv.'); Writeln('Broqt na horata dali pari poveche ot 2 lv. sa: ',br); end; begin Writeln('Vavedi kolko choveka shte budat:'); Readln(N); Writeln; Spisuk(N); Writeln; PechatS(N); Writeln; Proverkairezultat(N); Readln; end.Много се чудих, дали да направя последното условие и реших да опитам. Направих само част от него. Не съм сигурен, че е така, но ….
Ехааа, Светли! Получило се е, и още как! Ти си направил едновременно прочитане на елементите на масива и записа във файл. :-) И всички проверки и сметки също са ти групирани в един цикъл. Чудесна идея и много ефективно! И програмата е много добре подредена и с ясни и разбираеми съобщения, и разделена на функции, браво! Тази програма си е за два плюса или направо за оценка. :-)
Виж обаче около намирането на минималната и максималната стойност, там имаш някакви грешки, оправи си ги.
program Project1; var Pari: array [0..20] of real; i, Broi, Poveche2: integer; Suma, Sredno, min, max: real; begin Sredno:=0; Poveche2:=0; Write('Kolko uchenici otivat za zakuski: '); ReadLn(Broi); WriteLn; WriteLn('Po kolko pari vseki?'); ReadLn(pari[0]); min:=(pari[0]); max:=(pari[0]); suma:=(pari[0]); if pari[0] >= 2 then Inc (Poveche2); for i:= 1 to (broi-1) do begin Readln(pari[i]); Suma:=Suma+pari[i]; Sredno:= Suma/Broi; if min > pari[i] then min:= pari[i]; if max < pari[i] then max:= pari[i]; if pari[i] >= 2 then Inc(Poveche2); end; WriteLn; WriteLn('Obshtata suma e: ', Suma:3:2); WriteLN('Srednata suma, koqto se pada na uchenik e: ', Sredno:3:2); WriteLn('Minimalniqt broi pari e: ', min:3:2); WriteLn('Maksimalniqt broi pari e: ', max:3:2); WriteLn('Uchenicite s poveche ot 2 leva sa: ', Poveche2); ReadLn; end.Браво, Вики! Само Sredno няма нужда да го смяташ в цикъла, иначе всичко друго е чудесно направено и много ефективно.
program project1; var a: array [1..21] of integer; i, N, Suma, min, max, nad2:integer; begin //Въвеждаме броя на учениците Write('Vuvedete broya uchenici: '); ReadLn(N); //Отпечатва на екрана колко пари има всеки ученик for i:= 1 to N do begin Write('Uchenik No ',i,' ima v sebe si: '); ReadLn(a[i]); end; //Отпечатва на екрана списък със сумите WriteLn('Spisuk na uchenicite:'); for i:= 1 to N do Write(a[i], ' leva, '); WriteLn; //Отпечатва на екрана общата сума пари Suma:= 0; for i:= 1 to N do Suma:= Suma + a[i]; WriteLn('Imat obshto ', Suma,' leva'); //Отпечатва на екрана най-малката сума пари min:= a[1]; for i:= 2 to N do if a[i] < min then min:= a[i]; WriteLn('Uchenikut s nai-malko pari ima ', min,' leva'); //Отпечатва на екрана най-голямата сума пари max:= a[1]; for i:= 2 to N do if a[i] > max then max:= a[i]; WriteLn('Uchenikut s nai-mnogo pari ima ', max,' leva'); //Отпечатва на екрана колко хора имат повече от 2 лева nad2:= 0; for i:= 1 to N do if a[i] > 2 then nad2:= nad2 + 1; WriteLn('Broyat na horata s poveche ot 2 leva e: ', nad2); ReadLn; end.Ееее, браво! Най-после да видя и от тебе задача. Много добре направено!
program Update1; var a: array [1..21] of integer; i, N, Suma, min, max, nad2, j, swap, imin:integer; begin //Въвеждаме броя на учениците Write('Vuvedete broya uchenici: '); ReadLn(N); WriteLn; //Отпечатва на екрана колко пари има всеки ученик for i:= 1 to N do begin Write('Uchenik No ',i,' ima v sebe si: '); ReadLn(a[i]); end; WriteLn; //Отпечатва на екрана списък със сумите във възходящ ред for i:=1 to N-1 do begin imin:=i; for j:=i+1 to N do if a[j]<a[imin] then imin:=j; if imin <> i then begin swap:=a[i]; a[i]:=a[imin]; a[imin]:=swap; end; end; for i:= 1 to N do Write(a[i], 'leva, '); WriteLn; WriteLn; //Отпечатва на екрана общата сума пари Suma:= 0; for i:= 1 to N do Suma:= Suma + a[i]; WriteLn('Imat obshto ', Suma,' leva'); WriteLn; //Отпечатва на екрана най-малката сума пари min:= a[1]; for i:= 2 to N do if a[i] < min then min:= a[i]; WriteLn('Uchenikut s nai-malko pari ima ', min,' leva'); WriteLn; //Отпечатва на екрана най-голямата сума пари max:= a[1]; for i:= 2 to N do if a[i] > max then max:= a[i]; WriteLn('Uchenikut s nai-mnogo pari ima ', max,' leva'); WriteLn; //Отпечатва на екрана колко хора имат повече от 2 лева nad2:= 0; for i:= 1 to N do if a[i] > 2 then nad2:= nad2 + 1; WriteLn('Broyat na horata s poveche ot 2 leva e: ', nad2); ReadLn; end.Вярно, но неефективно. След като масивът е подреден, кодът надолу може да се опрости.