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

Задача 8 Урок 18 Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).

type myarr = array[1..300] of integer;
     myarr1 = array[1..300] of string;

var s, name : string;
    bal, o, u,i : integer;
    letters :myarr1;
    numbers : myarr;

procedure writearray(h : string; var sname : string; var sbal : integer);
var  i, c : integer;
     g: string;
begin
  g:='';
  for i:=1 to length(h) do
    begin
      val(h[i], sbal, c);
      if (c<>0) then
        sname := sname + h[i];
    if (h[i] >= '0') and (h[i] <= '9') then
      g := g + h[i];
      val(g, sbal, c);
  end;
end;

procedure winner(var letters : myarr1; var a12 : myarr);

begin
  if (a12[1]>a12[2]) and (a12[1]>a12[3]) then
    writeln ('winner',' ', letters[1],a12[1]);
  if (a12[2]>a12[1]) and (a12[2]>a12[3]) then
    writeln ('winner',' ', letters[2],a12[2]);
  if (a12[3]>a12[1]) and (a12[3]>a12[2]) then
    writeln ('winner',' ', letters[3],a12[3]);
end;



begin
  o := 1;
  repeat
    writeln('enter the line');
    readln(s);
    if  s='end' then break;
    writearray(s, name, bal);
    letters[o] := name;
    numbers[o] := bal;
    Inc(o);
    name := '';
  until s='end';
  for i:=1 to o do
    writeln (letters[i],numbers[i]);
  winner(letters,numbers);
  readln();
end.    

Вывод консоли:

enter the line
Vovan 55
enter the line
Ilia 77
enter the line
pasha 100
enter the line
end
Vovan 55
Ilia 77
pasha 100
0
winner pasha 100