Advertisement
Amorf

Untitled

Feb 17th, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.12 KB | None | 0 0
  1. program Danilova;
  2.  
  3. Uses
  4.     System.SysUtils;
  5.  
  6. Type
  7.     Human = Record
  8.         Name : String[20];
  9.         Surname : String[20];
  10.         Number : String[13];
  11.         Address : String[40];
  12.         Age : Byte;
  13.     End;
  14.     TPeople = Array of Human;
  15.  
  16.  
  17. Function InputAmount() : Integer;
  18. Var
  19.     IsCorrect : Boolean;
  20.     Amount : Integer;
  21. Begin
  22.     Amount := 0;
  23.     Repeat
  24.         IsCorrect := True;
  25.         Write('Введите количество людей: ');
  26.         Try
  27.             Readln(Amount);
  28.         Except
  29.             Writeln('Введены некорректные данные!');
  30.             IsCorrect := false;
  31.         End;
  32.         If IsCorrect and (Amount < 1) then
  33.         Begin
  34.             Writeln('Введены некорректные данные!');
  35.             IsCorrect := false;
  36.         End;
  37.     Until IsCorrect;
  38.     InputAmount := Amount;
  39. End;
  40. Procedure InputPeople(People : TPeople);
  41. Var
  42.     I : Integer;
  43.     IsCorrect : Boolean;
  44.     Begin
  45.     For I := 0 to High(People) do
  46.     Begin
  47.         Repeat
  48.             IsCorrect := True;
  49.             Write('Введите имя ', I + 1,' человека: ');
  50.             Try
  51.                 Readln(People[I].Name);
  52.             Except
  53.                 Writeln('Введены некорректные данные!');
  54.                 IsCorrect := false;
  55.             End;
  56.         Until IsCorrect;
  57.         Repeat
  58.             IsCorrect := True;
  59.             Write('Введите фамилию ', I + 1,' человека: ');
  60.             Try
  61.                 Readln(People[I].Surname);
  62.             Except
  63.                 Writeln('Введены некорректные данные!');
  64.                 IsCorrect := false;
  65.             End;
  66.         Until IsCorrect;
  67.         Repeat
  68.             IsCorrect := True;
  69.             Write('Введите возраст ', I + 1,' человека: ');
  70.             Try
  71.                 Readln(People[I].Age);
  72.             Except
  73.                 Writeln('Введены некорректные данные!');
  74.                 IsCorrect := false;
  75.             End;
  76.         Until IsCorrect;
  77.         Repeat
  78.             IsCorrect := True;
  79.             Write('Введите адрес ', I + 1,' человека: ');
  80.             Try
  81.                 Readln(People[I].Address);
  82.             Except
  83.                 Writeln('Введены некорректные данные!');
  84.                 IsCorrect := false;
  85.             End;
  86.         Until IsCorrect;
  87.         Repeat
  88.             IsCorrect := True;
  89.             Write('Введите телефон ', I + 1,' человека: ');
  90.             Try
  91.                 Readln(People[I].Number);
  92.             Except
  93.                 Writeln('Введены некорректные данные!');
  94.                 IsCorrect := false;
  95.             End;
  96.         Until IsCorrect;
  97.         Writeln;
  98.     End;
  99. End;
  100.  
  101. Function FindOldestPeople(People : TPeople;OldestPeople : TPeople) : Integer;
  102. Var
  103.     I, OldAge, Counter : Integer;
  104. Begin
  105.     Counter := 0;
  106.     OldAge := 0;
  107.     For I := 0 to High(People) do
  108.         If OldAge < People[I].Age then
  109.             OldAge := People[I].Age;
  110.     For I := 0 to High(People) do
  111.         If OldAge = People[I].Age then
  112.         Begin
  113.             OldestPeople[Counter] := People[I];
  114.             Inc(Counter);
  115.         End;
  116.     FindOldestPeople := Counter;
  117. End;
  118. Procedure Output (OldestPeople : TPeople);
  119. Var
  120.     I : Integer;
  121. Begin
  122.     Writeln('Самые старые люди:');
  123.     For I := 0 to High(OldestPeople) do
  124.     Begin
  125.         Write(OldestPeople[I].Surname,' ',OldestPeople[I].Name,' ',OldestPeople[I].Age,' ',OldestPeople[I].Number,' ',OldestPeople[I].Address);
  126.         Writeln;
  127.     End;
  128. End;
  129. Procedure Main();
  130. Var
  131.     Amount, CounterOldPeople : Integer;
  132.     People, OldestPeople : TPeople;
  133. Begin
  134.     Amount := InputAmount();
  135.     Setlength(People,Amount);
  136.     InputPeople(People);
  137.     Setlength(OldestPeople, Amount);
  138.     CounterOldPeople := FindOldestPeople(People, OldestPeople);
  139.     Setlength(OldestPeople, CounterOldPeople);
  140.     Output(OldestPeople);
  141.     Readln;
  142. End;
  143. Begin
  144.     Main;
  145. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement