Лабораторные работы_2 / Спецификации / Упражнение № 5
.docУпражнение № 5
Вариант 10.
Захаров Антон
группа А–13–08
-
Условие задачи.
Последовательность типизированных файлов содержит следующую информацию:
-
Год
Город
Январь
…
Декабрь
Осадки
Температура
Осадки
Температура
Организовать файл так, чтобы минимизировать время ответа на следующий вопрос: год с наиболее бесснежной зимой в Игарке.
-
Входные данные.
Состав: цел year – текущий год
1900..2008
лит city – город
[20]
лит name_month – название месяца
[10]
цел os – осадки за текущий месяц
500..1000
цел temp – средняя температура за текущий месяц
–70..70
Входная форма:
fin
<year><city><name_month><os><temp>…<name_month><os><temp> … … … … <year><city><name_month><os><temp>…<name_month><os><temp>
|
конец файла
-
Выходные данные.
Состав: цел year1 – год с наиболее снежной зимой в Игарке
Выходная форма:
fout
<Meteo><Meteo> … <Meteo> |
output
Наиболее бесснежная зима в Игарке была в <year1> году |
fout
meteo*
year city month*(12)
name_month os temp
-
Метод.
Создание типизированного файла. Поиск года с наиболее бесснежной зимой в Игарке, путём поиска наименьшего суммарного количества осадков, выпавших за декабрь, январь и февраль.
-
Аномалии.
Не рассматриваются.
6. Функциональные тесты.
Входной файл
1900 Владивосток январь 654 -19 февраль 643 -17 ……… декабрь 694 -21
1901 Владивосток январь 621 -12 февраль 564 -14 ……… декабрь 632 -20
1902 Владивосток январь 542 -16 февраль 611 -15 ……… декабрь 602 -20
………
1900 Игарка январь 654 -19 февраль 688 -17 ……… декабрь 651 -23
1901 Игарка январь 594 -18 февраль 639 -17 ……… декабрь 617 -19
1902 Игарка январь 687 -16 февраль 653 -19 ……… декабрь 686 -22
…
2008 Хабаровск январь 546 -12 февраль 564 -14 ……… декабрь 632 -20
program Exercise_5 (fin, fout);
type
Tmonth = record
name_month : string [10];
os : 500..1000;
temp : -70..70;
end;
Tmeteo = record
year : 1900..2008;
city : string [20];
Month : array [1..12] of Tmonth;
end;
var
fin : text;
fout : file of Tmeteo;
meteo : Tmeteo;
year1, I, os1, os2 : integer;
begin
assign (fin,’C:\fin.txt’);
reset (fin);
assign (fout,’C:\fout.dat’);
rewrite (fout);
while not eof (fin) do
begin
with meteo do
begin
read (fin, year, city);
for i:=1 to 12 do
with month [i] do
read (fin,name_month,os,temp);
end;
readln (fin);
write (fout,meteo);
end;
reset (fout);
read (fout, meteo);
while meteo.city<>’Игарка’ do
read (fout, meteo);
os1:= meteo.month[1].os+meteo.month[2].os+meteo.month[12].os;
year1:=1900;
read (fout, meteo);
while meteo.city=’Игарка’ do
begin
os2:=meteo.month[1].os+meteo.month[2].os+meteo.month[12].os;
if os2<os1
then
begin
os1:=os2; year1:=meteo.year;
end;
read (fout, meteo);
end;
writeln (‘Наиболее бесснежная зима в Игарке была в ’,year1,’ году’);
readln;
end.