Определить число пассажиров, имеющих более двух вещей - Pascal ABC
Формулировка задачи:
Зада )
Багаж пассажира характеризуется количеством и общей массой вещей. Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно поле действительное (масса вещей в килограммах). Определить:
а) число пассажиров, имеющих более двух вещей, и число пассажиров,
количество вещей, которых превосходит среднее;
б) имеется ли пассажир, багаж которого состоит из одной вещи
массой менее Т [кг].
файл должен создаваться программой
Решение задачи: «Определить число пассажиров, имеющих более двух вещей»
textual
Листинг программы
type
bagaz=record
kol:integer;
ves:real;
end;
var bg:bagaz;
k,i,n,k2,ks:integer;
f:file of bagaz;
t,sr:real;
begin
//создание файла
assign(f,'bagaz');
rewrite(f);
write('Число пассажиров k');
readln(k);
writeln('Введите данные о багаже, окончание ввода Esc:');
for i:=1 to k do
begin
writeln('Багаж ',i);
write(' Количество мест: ');readln(bg.kol);
write(' Вес: ');readln(bg.ves);
write(f,bg);
end;
//определение среднего количества вещей
reset(f);
n:=0;sr:=0;
while not eof(f) do
begin
read(f,bg);
n:=n+1;
sr:=sr+bg.kol;
end;
sr:=sr/n;
writeln('Среднее число вещей=',sr:0:0);
write('Введите вес 1 вещи для поиска t=');
readln(t);
//определение данных по условию
reset(f);
k2:=0;
ks:=0;
k:=0;
while not eof(f) do
begin
read(f,bg);
if bg.kol>2 then k2:=k2+1;
if bg.kol>sr then ks:=ks+1;
if (bg.kol=1)and(bg.ves<t)then k:=1;
end;
close(f);
writeln('Число пассажиров, имеющих более 2х вещей=',k2);
writeln('Число пассажиров, имеющих вещей больше среднего=',ks);
if k=1 then write('Есть пассажир у которого 1 вещь массой менее ',t:0:1);
end.
Объяснение кода листинга программы
- Создается тип данных
bagaz, который представляет собой запись с тремя полями:kol(количество вещей),ves(вес вещей) иend. - Создается переменная
bgтипаbagaz, которая будет использоваться для записи данных о багаже. - Создаются переменные
k,i,n,k2иksтипаintegerи инициализируются нулем. - Создается файл
fтипаfile of bagaz. - Записывается сообщение
Число пассажиров kв файлf. - Пользователю предлагается ввести данные о багаже для k пассажиров. Для каждого багажа записывается количество мест и вес в файл
f. - Сбрасываются счетчики
nиsrдля подсчета среднего количества вещей и общего количества вещей соответственно. - Пока не достигнут конец файла
f, считывается информация о багаже, увеличивается счетчикnи обновляется среднее количество вещей. - После ввода всех данных, вычисляется среднее количество вещей как отношение суммы количества вещей к количеству вещей.
- Запрашивается вес одной вещи для поиска.
- Сбрасывается счетчик
k2иksдля подсчета количества пассажиров с более чем двумя вещами и количеством вещей больше среднего соответственно. - Пока не достигнут конец файла
f, считывается информация о багаже. Если количество вещей больше двух и вес вещей меньше заданного, то увеличивается счетчикk. - Закрывается файл
f. - Выводится количество пассажиров с более чем двумя вещами (
k2). - Выводится количество пассажиров с вещами больше среднего (
ks). - Если k=1, выводится сообщение о пассажире с одной вещью массой менее заданного.