Задача 5 Урок 18

Урок 18

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

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

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

type arrString = array[1..3] of string;
     arrInteger = array[1..3] of integer;

var fromStringArr: arrString = ('','','');
    arrScore: arrInteger;
    arrName: arrString;

function getStringArr(fromStringArr1: arrString): arrString;
  var inputString: string;
      loopCount: integer;

begin
  loopCount := 0;
  writeln('Введите результаты участников Имя Счет');
  while (inputString <> 'end') do
  begin
    Inc(loopCount);
    readln(inputString);
    if loopCount <= 3 then
      fromStringArr1[loopCount] := inputString;
  end;
  result := fromStringArr1;
end;

procedure getArrsForNameAndScore(fromStringArr1: arrString; var arrName1: arrString; var arrScore1: arrInteger);

  var loopCountString{счетчик цикла}, loopCountArr, toInt{для преобразования в число},
      newInt1, errorCode{код ошибки}: integer;
      toStringNum, toStringName: string;

begin
  toStringNum := '';
  toStringName := '';

  for loopCountArr := 1 to 3 do
  begin
    for loopCountString := 1 to length(fromStringArr1[loopCountArr]) do
    begin
      val(fromStringArr1[loopCountArr,loopCountString], toInt, errorCode);
      if (errorCode = 0) then
      begin
        toStringNum := toStringNum + fromStringArr1[loopCountArr,loopCountString];
        val(toStringNum, newInt1, errorCode);
      end
      else if (fromStringArr1[loopCountArr,loopCountString] = ' ') then
      begin
        toStringNum := '';
      end
      else if (errorCode <> 0) and (fromStringArr1[loopCountArr,loopCountString] <> ' ') then
      begin
        toStringName :=  toStringName + fromStringArr1[loopCountArr,loopCountString];
      end;
    end;
    writeln('Имя: ', toStringName, ', счёт: ', newInt1, ';');
    arrName1[loopCountArr] := toStringName;
    arrScore1[loopCountArr] := newInt1;
    toStringNum := '';
    toStringName := '';
    newInt1 := 0;
  end;
end;

procedure lookForWinner(arrName1: arrString; arrScore1: arrInteger);
  var loopCountArr, key, win: integer;

begin
  key := 0;
  win := 0;
  for loopCountArr := 1 to 3 do
  begin
    if arrScore1[loopCountArr] > win then
    begin
      key := loopCountArr;
      win := arrScore1[loopCountArr];
    end;
  end;
  writeln('Победитель ', arrName1[key], ', со счетом: ', win);
end;

begin
  fromStringArr := getStringArr(fromStringArr);
  getArrsForNameAndScore(fromStringArr, arrName, arrScore);
  lookForWinner(arrName, arrScore);
  readln();
end.

КОНСОЛЬ

Введите результаты участников Имя Счет
Вася 145
Петя 365
Женя 952
Игорь 563
Роман201
end
Имя: Вася, счёт: 145;
Имя: Петя, счёт: 365;
Имя: Женя, счёт: 952;
Победитель Женя, со счетом: 952