Урок 17. Задача №5. Решение.

Урок 17. Задача №5.

Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):

Вася         485
Коля       555
Юра        61
..........
....
end // признак завершения ввода

(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины = 3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.

type
  StrMyArr = array[1..3] of string;
  IntMyArr = array[1..3] of integer;

function SearchMax(y: integer; arr: IntMyArr): integer;
var f: integer;
begin
  y := arr[1];
  for f := 2 to length(arr) do
    if(y < arr[f]) then
      y := arr[f];
  result := y;
end;

procedure printResult(x: integer; int_arr: IntMyArr; str_arr: StrMyArr);
begin
  if(x = int_arr[1]) then
  begin
    writeln('And winner is...:');
    writeln(str_arr[1], x);
  end else if(x = int_arr[2]) then
  begin
    writeln('And winner is...:');
    writeln(str_arr[2], x);
  end else
  begin
    writeln('And winner is...:');
    writeln(str_arr[3], x);
  end;
end;

var str, name, tmp: string;
  arrName: StrMyArr;
  arrInt: array [1..3] of integer;
  max, j, i, k, point: integer;
begin
  writeln('If you enter the word "end" step on next program! ');
  writeln();
  writeln('Enter your name:     enter your points: ');

  while(str <> 'end') do
  begin
    readln(str);
    if(str <> 'end') then
    begin
     for i := 1 to length(str) do
    begin
     if(str[i] >= '0') and (str[i] <= '9') then
       tmp += str[i]
     else
       name += str[i];
    end;
     val(tmp, point);
     j += 1;
     arrInt[j] := point;
     k += 1;
     arrName[k] := name;
     tmp := '';
     name := '';
    end;
  end;

  max := SearchMax(max, arrInt);
  writeln();
  printResult(max, arrInt, arrName);

  readln(); // Удержание консоль
end.// Завершение программы