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


program SredniTemperaturi; procedure ZapishiTemperaturi; var F: file of integer; chislo, m: integer; begin Assign(F, 'temp.dat'); Rewrite(F); WriteLn('Vavedete srednata temperatura za vseki mesec:'); for m:= 1 to 12 do begin Write('mesec ', m, ' - '); ReadLn(chislo); Write(F, chislo); end; Close(F); end; procedure ProchetiTemperaturi; var F: file of integer; chislo, m: integer; begin Assign(F, 'temp.dat'); Reset(F); WriteLn('Temperaturite sa:'); for m:= 1 to 12 do begin Read(F, chislo); WriteLn('mesec ', m, ' - ', chislo); end; Close(F); end; procedure Proverka; var F: file of integer; dadeno, chislo, m, br: integer; begin br:=0; Write('Vavedete niakakva dadena temperatura, s koiato da sravniavame: '); ReadLn(dadeno); Assign(F, 'temp.dat'); Reset(F); WriteLn('Temperaturite nad dadenata sa:'); for m:= 1 to 12 do begin Read(F, chislo); if chislo>dadeno then begin br:=br+1; WriteLn('mesec ', m, ' - ', chislo); end; end; WriteLn('Obshtiat broi na tezi meseci e ', br); Close(F); end; var iskam: char; begin WriteLn('Iskate li da vavedete novi danni?'); WriteLn('Molia otgovorete s d za da ili n za ne.'); WriteLn('Ako izberete ne, shte rabotim sas starite.'); ReadLn(iskam); if iskam='d' then ZapishiTemperaturi; WriteLn; ProchetiTemperaturi; WriteLn; Proverka; ReadLn; end.Самоче съм обединила третата и четвъртата точка. Вкъщи ще видя как трябва да се направят отделно.
Много добре, Бори! Само dadeno можеше да е параметър – за да обхване функцията Proverka и случаите, в които знаем вече за каква температура искаме да проверяваме. Тогава няма да е нужно тя да се чете от клавиатурата. Всичко останало е перфектно.
С Аля :D
program project1; const N = 12; procedure VavediT; var F: file of integer; t, i: integer; begin Assign(F, 'chisla.dat'); Rewrite(F); WriteLn('vavedete 12 temperaturi:'); for i:= 1 to N do begin ReadLn(t); Write(F, t); end; WriteLn; Close(F); end; procedure ProchetiT; var F: file of integer; t, i: integer; begin Assign(F, 'chisla.dat'); Reset(F); WriteLn('Temperaturite sa:'); for i:= 1 to N do begin Read(F, t); WriteLn(t); end; Close(F); end; var otgovor: string; begin WriteLn('Iskate li da vavedete novi temperaturi?'); ReadLn(otgovor); if otgovor='da' then begin VavediT; ProchetiT; end else if otgovor='ne' then ProchetiT; ReadLn; end.Браво, много добре сте се справили!
program Project1; Const N=12; procedure Vavejdanenatemp; var F:file of integer; temp,i:integer; begin Assign(F,'Temp.dat'); Rewrite(F); Writeln('Zapishete srednata temp. prez wsichki meseci'); for i:=1 to N do begin Readln(Temp); Write(F,Temp); end; Close(F); end; Procedure Izvejdanetemp; var F:file of integer; temp,i:integer; begin Assign(F,'Temp.dat'); Reset(F); Writeln('Temp sa:'); for i:=1 to N do begin Read(F,Temp); Writeln(Temp); end; Close(F); end; Procedure Srednatemp; var F:file of integer; temp,i,x:integer; begin Assign(F,'Temp.dat'); Reset(F); Write('Vavedete Dadena Temp.'); read(x); for i:=1 to N do Begin Read(F,temp); If x < temp then Writeln('Temp e nad dadenata') Else Writeln('error'); end; Close(F); end; begin Vavejdanenatemp; Izvejdanetemp; Srednatemp; Readln; end.Браво Любо, много добре направена задача! Можеше само ако температурата е над дадената да я отпечаташ и за кой месец е, за да е ясно. Другото е перфектно направено.
program project1; var Temperatura: file of Integer; t,i,m,br,tdadeno:integer; function ZapishiT(t,m:integer):integer; begin Assign(Temperatura, 'Temperatura.dat'); Rewrite(Temperatura); m:=1; for i:= 1 to 12 do begin Writeln('Vavedi temperatua za mesec ',m); Readln(t); Write(Temperatura,t); m:=m+1; end; Close(Temperatura); Writeln('Stop vie vavedohte dostatuchno informaciq'); end; function ProchetiT(t:integer):integer; begin Assign(Temperatura, 'Temperatura.dat'); Reset(Temperatura); m:=1; for i:= 1 to 12 do begin Read(Temperatura,t); Writeln(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); for i:= 1 to 12 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); for i:= 1 to 12 do begin Read(Temperatura,t); if m=1 then Writeln('Temperaturata za mesec Qnuari e: ',t); if m=2 then Writeln('Temperaturata za mesec Fevruari e: ',t); if m=3 then Writeln('Temperaturata za mesec Mart e: ',t); if m=4 then Writeln('Temperaturata za mesec April e: ',t); if m=5 then Writeln('Temperaturata za mesec Mai e: ',t); if m=6 then Writeln('Temperaturata za mesec Juni e: ',t); if m=7 then Writeln('Temperaturata za mesec Juli e: ',t); if m=8 then Writeln('Temperaturata za mesec Avgust e: ',t); if m=9 then Writeln('Temperaturata za mesec Septemvri e: ',t); if m=10 then Writeln('Temperaturata za mesec Oktomvri e: ',t); if m=11 then Writeln('Temperaturata za mesec Noemvri e: ',t); if m=12 then Writeln('Temperaturata za mesec Dekemvri e: ',t); m:=m+1; end; Close(Temperatura); end; begin ZapishiT(t,i); Writeln; ProchetiT(t); Writeln; SravnenieT(tdadeno,t,br); Writeln; MeseciT(t,m); Readln; end.Направена е от вкъщи.
Браво за самостоятелната работа, Светли! Прегледай обаче пак презентациите „Функции – глобални и локални променливи“ и „Функции – глобални и локални променливи – упражнения“ и виж дали е така при теб. И прочети пак условието на последната подточка. Работата вкъщи е тройно по-трудна, защото човек не може да пита нито съученик, нито учителя. Но точно и заради това е тройно по-полезна :-).
program temperaturi; const N = 12; procedure ZapisTemp; var T: file of real; chislo: real; i:integer; begin Assign(T, 'Temp'); Rewrite(T); WriteLn('vavedete 12 mesechni temperaturi:'); for i:= 1 to N do begin ReadLn(chislo); Write(T, chislo); end; Close(T); end; procedure ProchitaTemp; var T: file of real; chislo:real; i:integer; begin Assign(T, 'Temp'); Reset(T); WriteLn('Temperaturite sa:'); for i:= 1 to N do begin Read(T, chislo); WriteLn(chislo:5:2); end; Close(T); end; Procedure Brtemp(Temperatura:real); var T: file of real; chislo, BrWisokatemp: real; i:integer; begin BrWisokatemp:=0; Assign(T, 'Temp'); Reset(T); for i:= 1 to N do begin Read(T, chislo); If chislo > Temperatura then BrWisokatemp:=BrWisokatemp+1; end; WriteLn('Mesecite s temperatura po-wisoka ot dadenata sa:',BrWisokatemp:5:2); ReadLn; Close(T); end; begin ZapisTemp; ProchitaTemp; Brtemp(20); ReadLn; end.Браво, Бубе! Много добре!
Цялата програма
program temperaturi; Const N=3; procedure Vavejdanenatemp; var F:file of integer; temp,i:integer; begin Assign(F,'Temp.dat'); Rewrite(F); Writeln('Zapishete srednata temp. prez wsichki meseci'); for i:=1 to N do begin Readln(Temp); Write(F,Temp); end; Close(F); end; Procedure Izvejdanetemp; var F:file of integer; temp,i:integer; begin Assign(F,'Temp.dat'); Reset(F); Writeln('Temp sa:'); for i:=1 to N do begin Read(F,Temp); Writeln(Temp); end; Close(F); end; Procedure Srednatemp; var F:file of integer; temp,i,x:integer; begin Assign(F,'Temp.dat'); Reset(F); Write('Vavedete Dadena Temp.'); readLN(x); for i:=1 to N do Begin Read(F,temp); If x < temp then Writeln('Temp e nad dadenata:',temp); end; Close(F); end; procedure Moimesec; var F:file of integer; mesec ,temp,i:integer; begin Assign(F,'Temp.dat'); reset(F); Writeln('vavedete koi v mesec ste rodeni'); Readln(mesec); i:=Filesize(F); If i> N then writeLn('Nqma takava temp') else begin Seek(F,mesec-1); read(F,Temp); Write('Temp v vashiq mesec e:',temp); end; close(F); end; begin Vavejdanenatemp; Izvejdanetemp; Srednatemp; Moimesec; Readln; end.Браво, Любо, много добре! Само си провери процедурата Moimesec, например въведи за месец 13-ти. :-) Проследи си кода стъпка по стъпка и виж къде трябва да се коригира.