Помогите срочно(через Паскаль)

0 голосов
22 просмотров

Помогите срочно(через Паскаль)


image

Информатика (24 баллов) | 22 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1573 от 04.11.2017
// Внимание! Если программа не работает, обновите версию!

type
  Призывник=record
    ФИО:string[48];
    Пол:char;
    Рост:byte;
    Вес:byte;
    Рекомендация:shortint
  end;

begin
  var buf:Призывник;
  var f:file of Призывник;
  Assign(f,'Prizyvnik.bin'); Rewrite(f);
  while True do begin // выход по break
    Writeln('Введите данные очередного призывника');
    Writeln('Фамилия, имя, отчество или * для окончания ввода: ');
    buf.ФИО:=ReadlnString;
    if buf.ФИО='*' then break;
    buf.Пол:=UpCase(ReadlnChar('Пол (М/Ж):'));
    Write('Рост, см: '); Readln(buf.Рост);
    Write('Вес, кг: '); Readln(buf.Вес);
    buf.Рекомендация:=(buf.Рост-buf.Вес)-100;
    Write(buf.ФИО,' ',buf.Пол,' ',buf.Рост,' ',buf.Вес,': ');
    if buf.Рекомендация>0 then Writeln('Поправиться на ',
        buf.Рекомендация,' кг.')
    else
      if buf.Рекомендация<0 then Writeln('Похудеть на ',<br>        -buf.Рекомендация,' кг.')
      else Writeln('Норма!');
    Write(f,buf)
    end;
  f.Close
end.

Пример работы программы
Введите данные очередного призывника
Фамилия, имя, отчество или * для окончания ввода:
Иванов Петр Сергеевич
Пол (М/Ж): М
Рост, см: 176
Вес, кг: 72
Иванов Петр Сергеевич М 176 72: Поправиться на 4 кг.
Введите данные очередного призывника
Фамилия, имя, отчество или * для окончания ввода:
Петров Иван Афанасьевич
Пол (М/Ж): М
Рост, см: 175
Вес, кг: 76
Петров Иван Афанасьевич М 175 76: Похудеть на 1 кг.
Введите данные очередного призывника
Фамилия, имя, отчество или * для окончания ввода:
Тарасова Валентина Анатольевна
Пол (М/Ж): Ж
Рост, см: 168
Вес, кг: 68
Тарасова Валентина Анатольевна Ж 168 68: Норма!
Введите данные очередного призывника
Фамилия, имя, отчество или * для окончания ввода:
*

Программа для контрольного чтения полученного файла

type
  Призывник=record
    ФИО:string[48];
    Пол:char;
    Рост:byte;
    Вес:byte;
    Рекомендация:shortint
  end;

begin
  var buf:Призывник;
  var f:file of Призывник;
  Assign(f,'Prizyvnik.bin'); Reset(f);
  while not Eof(f) do begin
    Read(f,buf);
    Write(buf.ФИО,' ',buf.Пол,' ',buf.Рост,' ',buf.Вес,': ');
    if buf.Рекомендация>0 then Writeln('Поправиться на ',
        buf.Рекомендация,' кг.')
    else
      if buf.Рекомендация<0 then Writeln('Похудеть на ',<br>        -buf.Рекомендация,' кг.')
      else Writeln('Норма!');
    end;
  f.Close
end.

Пример
Иванов Петр Сергеевич М 176 72: Поправиться на 4 кг.
Петров Иван Афанасьевич М 175 76: Похудеть на 1 кг.
Тарасова Валентина Анатольевна Ж 168 68: Норма!
(150k баллов)