type tMan = record gender: char; fio: string; height: integer end;
var man: tMan; max1, max2: integer; mfio: string; f: file;
begin { Заполнение файла } Assign(f, 'manfile.txt'); Rewrite(f); Writeln('Введите через Enter пол (м/ж), фамилию и рост в см'); Writeln('Для отказа введите 0'); repeat Readln(man.gender); if man.gender in gend then begin Readln(man.fio); Readln(man.height); Write(f, man); Writeln('Данные приняты, продолжайте') end until not (man.gender in gend); Close(f); { Работа с файлом } Assign(f, 'manfile.txt'); Reset(f); max1 := 0; max2 := 0; while not Eof(f) do begin Read(f, man); with man do if (gender = 'м') and (max1 < height) then begin max1 := height; mfio := fio end else if (gender = 'ж') and (max2 < height) then max2 := height; end; Writeln('Самый высокий- ', mfio, ', рост самой высокой равен ', max2); Close(f); end.
Тестовое решение:
Введите через Enter пол (м/ж), фамилию и рост в см Для отказа введите 0 м Иванов И.И. 176 Данные приняты, продолжайте ж Егорова К.С. 169 Данные приняты, продолжайте ж Старова Г.К. 168 Данные приняты, продолжайте м Минкин Р.Т. 179 Данные приняты, продолжайте 0 Самый высокий- Минкин Р.Т., рост самой высокой равен 169
Рассматривая различные прямоугольники и подсчитывая в них число поворотов P, можно прийти к следующему алгоритму. Для любого натурального k получаем:
var M, N, k, mn, P: integer; f: Text;
begin Assign(f, 'input.txt'); Reset(f); Readln(f, M, N); Close(f); if M < N then mn := M else mn := N; if mn = 1 then P := 0 else begin k := mn div 2; if mn mod 2 = 0 then if M = N then P := 4 * k - 2 else P := 4 * k - 1 else if M = N then P := 4 * k else P := 4 * k + 1 end; Assign(f, 'output.txt'); Rewrite(f); Writeln(f, P); Close(f) end.
gend = ['м', 'ж'];
type
tMan = record
gender: char;
fio: string;
height: integer
end;
var
man: tMan;
max1, max2: integer;
mfio: string;
f: file;
begin
{ Заполнение файла }
Assign(f, 'manfile.txt');
Rewrite(f);
Writeln('Введите через Enter пол (м/ж), фамилию и рост в см');
Writeln('Для отказа введите 0');
repeat
Readln(man.gender);
if man.gender in gend then
begin
Readln(man.fio);
Readln(man.height);
Write(f, man);
Writeln('Данные приняты, продолжайте')
end
until not (man.gender in gend);
Close(f);
{ Работа с файлом }
Assign(f, 'manfile.txt');
Reset(f);
max1 := 0; max2 := 0;
while not Eof(f) do
begin
Read(f, man);
with man do
if (gender = 'м') and (max1 < height) then
begin
max1 := height;
mfio := fio
end
else if (gender = 'ж') and (max2 < height) then max2 := height;
end;
Writeln('Самый высокий- ', mfio, ', рост самой высокой равен ', max2);
Close(f);
end.
Тестовое решение:
Введите через Enter пол (м/ж), фамилию и рост в см
Для отказа введите 0
м
Иванов И.И.
176
Данные приняты, продолжайте
ж
Егорова К.С.
169
Данные приняты, продолжайте
ж
Старова Г.К.
168
Данные приняты, продолжайте
м
Минкин Р.Т.
179
Данные приняты, продолжайте
0
Самый высокий- Минкин Р.Т., рост самой высокой равен 169
var
M, N, k, mn, P: integer;
f: Text;
begin
Assign(f, 'input.txt');
Reset(f);
Readln(f, M, N);
Close(f);
if M < N then mn := M else mn := N;
if mn = 1 then P := 0
else begin
k := mn div 2;
if mn mod 2 = 0 then
if M = N then P := 4 * k - 2
else P := 4 * k - 1
else
if M = N then P := 4 * k
else P := 4 * k + 1
end;
Assign(f, 'output.txt');
Rewrite(f);
Writeln(f, P);
Close(f)
end.