Във файл са записани средномесечните темератури за няколко месеца от 2016 година, по една на месец. Напишете програма, която пита за начален и краен месец и чрез функции прави следното:
- въвежда температурите от клавиатурата във файл
- прочита данните от файла и ги извежда на екрана
- намира броят на месеците в които температурата е над дадената
- извежда на екрана кои са тези месеци и каква е била температурата тогава
- отпечатва температурата само за месеца, в който сте родени, ако е сред записаните


program project1; procedure VavediChisla; var F: file of integer; b, e, chislo, m: integer; begin Assign(F, 't.dat'); Rewrite(F); WriteLn('Izberete nachalen i kraen mesec (otdelete gi sas pauza):'); ReadLn(b, e); Write(F, b); Write(F, e); WriteLn('Vavedete srednata temperatura za vseki mesec:'); for m:= b to e do begin Write('mesec ', m, ' - '); ReadLn(chislo); Write(F, chislo); end; Close(F); end; procedure ProchetiChisla; var F: file of integer; b, e, chislo, m: integer; begin Assign(F, 't.dat'); Reset(F); Read(F, b); Read(F, e); WriteLn('Temperaturite sa:'); for m:= b to e do begin Read(F, chislo); WriteLn('mesec ', m, ' - ', chislo); end; Close(F); end; function NadDadenata(dadeno: integer): integer; var F: file of integer; b, e, chislo, m, br: integer; begin Assign(F, 't.dat'); Reset(F); Read(F, b); Read(F, e); br:=0; for m:= b to e do begin Read(F, chislo); if (chislo>dadeno) then Inc(br); end; Close(F); Result:=br; end; procedure MeseciNadDadenata (dadeno: integer); var F: file of integer; b, e, chislo, m: integer; begin Assign(F, 't.dat'); Reset(F); Read(F, b); Read(F, e); WriteLn('Temperaturite sa:'); for m:= b to e do begin Read(F, chislo); if (chislo>dadeno) then WriteLn('mesec ', m, ' - ', chislo); end; Close(F); end; procedure RojdenMesec (RD: integer); var F: file of integer; b, e, chislo: integer; begin Assign(F, 't.dat'); Reset(F); Read(F, b); Read(F, e); if (RD>=b) and (RD<=e) then begin Seek (F, RD+1); Read(F, chislo); WriteLn('Prez meseca na rojdenia vi den temperaturata e bila ', chislo); end else WriteLn('Vashiat rojden mesec ne e sred dannite.'); Close(F); end; var izbor: char; dadeno, RD: integer; begin //въвеждане на данни (с условие в случай че потребителя реши //да ползва старите) WriteLn('Iskate li da vavedete novi stoinosti? Vavedete d za da i n za ne.'); ReadLn(izbor); if izbor='d' then VavediChisla; WriteLn; //прочитане на данните (пак с условие) WriteLn('Iskate li da vidite dannite vav faila? Vavedete d za da i n za ne.'); ReadLn(izbor); if izbor='d' then ProchetiChisla; WriteLn; //брой на температурите над дадената Write('Vavedete niakakva temperatura za sravnenie: '); ReadLn(dadeno); WriteLn('Mesecite s temperatura nad dadenata sa ', NadDadenata(dadeno), ' na broi.'); WriteLn; //извеждане на месеците над дадената температура и каква е била тяхната температура WriteLn('Mesecite s temperatura nad dadenata sa:'); MeseciNadDadenata(dadeno); WriteLn; //отпечатване на температурата на рождения ви месец (ако е сред дадените) Write('Vavedete porednia nomer na meseca, kogato ste rodeni: '); ReadLn(RD); RojdenMesec(RD); ReadLn; end.Отлично, Бори! Само не съм сигурен RojdenMesec() дали работи вярно…
program project1; var Temperatura: file of Integer; t,i,m,br,tdadeno,n,k,mr:integer; function ZapishiT(t:integer):integer; begin Assign(Temperatura, 'Temperatura.dat'); Rewrite(Temperatura); Seek(Temperatura,n); for i:= n to k do begin Writeln('Vavedi temperatua'); Readln(t); Write(Temperatura,t); end; Close(Temperatura); Writeln('Stop vie vavedohte dostatuchno informaciq'); end; function ProchetiT(t:integer):integer; begin Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); Seek(Temperatura,n); for i:= n to k do begin Read(Temperatura,t); Writeln('Temperaturata e: ',t); end; Close(Temperatura); Writeln('Tova e vsichko '); end; function SravnenieT(tdadeno,t,br:integer):integer; begin Writeln('Vavedi temperatura za sravnenie'); Readln(tdadeno); Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); Seek(Temperatura,n); for i:= n to k do begin Read(Temperatura,t); if t > tdadeno then br:=br+1; end; Writeln('Broqt na mesecite s temperatura po-golqma ot dadenata sa: ',br); Close(Temperatura); end; function MeseciT(t,m:integer):integer; begin Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); Seek(Temperatura,n); for i:= n to k do begin Read(Temperatura,t); if i=1 then Writeln('Temperaturata za mesec Qnuari e: ',t); if i=2 then Writeln('Temperaturata za mesec Fevruari e: ',t); if i=3 then Writeln('Temperaturata za mesec Mart e: ',t); if i=4 then Writeln('Temperaturata za mesec April e: ',t); if i=5 then Writeln('Temperaturata za mesec Mai e: ',t); if i=6 then Writeln('Temperaturata za mesec Juni e: ',t); if i=7 then Writeln('Temperaturata za mesec Juli e: ',t); if i=8 then Writeln('Temperaturata za mesec Avgust e: ',t); if i=9 then Writeln('Temperaturata za mesec Septemvri e: ',t); if i=10 then Writeln('Temperaturata za mesec Oktomvri e: ',t); if i=11 then Writeln('Temperaturata za mesec Noemvri e: ',t); if i=12 then Writeln('Temperaturata za mesec Dekemvri e: ',t); end; Close(Temperatura); end; function MesecRoden(t,m,mr:integer):integer; begin //отваряме файла Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); //питаме за месеца Writeln('Prez koi mesec ste roden'); Readln(mr); if (mr>=n) and (k<=mr) then begin Seek(Temperatura,mr); Read(Temperatura,t); Writeln('Temperaturata prez meseca, v koito ste roden e: ',t); end; end; begin Writeln('Vavedete nachalna i kraina stoinost za period'); Readln(n,k); ZapishiT(t); Writeln; ProchetiT(t); Writeln; SravnenieT(tdadeno,t,br); Writeln; MeseciT(t,m); Writeln; MesecRoden(t,m,mr); Readln; end.Леле, Светли, колко голяма програма си сътворил! И имаш удачни имена на променливите, много добре е подредена. Но с доброто – дотук. :-) забележките ми по кода са:
procedure ProchetiFail; var t:integer; begin Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); WriteLn('Pechat na vsicho nalichno vav faila'); for i:= 1 to FileSize(Temperatura) do begin Read(Temperatura,t); Writeln('Temperaturata za mesec ', i, ' e: ',t); end; Close(Temperatura); Writeln('Tova e vsichko '); end;Извикай я след като запишеш температури за период март-април и виж какво има във файла.
Тази програма е твърде сложна, а времето ни в час е малко. Добре си се справил, само вкъщи на спокойствие я довърши. Виж и в другите качени решения как е реализирано и си го обясни, за да проучиш и тяхната идея каква е била. Човек, ако е умен, може да се учи и от грешките, и от успехите на другите. Така мисля.