Задача 6 урок 17

Задача 6 урок 17

Решите предыдущую задачу с использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).

var i, x, n, max: integer;
    s, k, winner: string;
    a: array[1..3] of string;
    b: array[1..3] of integer;

procedure getData(str: string; var name: string; var scores: integer);
var i, T, Code: integer; k, a: string;
begin
  for i:=1 to length(s) do
    begin
      if Not((str[i]>='0')and(str[i]<='9')) AND (str[i]<>' ') then
        a:=a+str[i]          //если не число и не пробел string
      else if (str[i]>='0')and(str[i]<='9') then
        k:=k+str[i];           //если число сохраняем в string
      if i=length(str) then   //после последнего символа число(string)
        begin
          Val(k, T, Code);     //преобразуем  в integer
          scores := T;
          name:=a;
          k:='';
          a:='';
        end;
    end;
end;

begin
  n:=1; //индекс массива
  while(s<>'end') do
    begin
    writeln('Enter name and points');
    readln(s);
    if (s<>'end') then
      getData(s, k, x);//вызов процедуры
      a[n]:= k;  //присвоение очередных значений массива
      b[n]:= x;  //присвоение очередных значений массива
      inc(n);   //сдвиг индекса массивов
    end;

   max := b[1];
   if max < b[2] then max := b[2]; //определяем максимальный integer
   if max < b[3] then max := b[3];
   for i:=1 to high(b) do
     if b[i]=max then //по индексу integer ищем значение string
       winner:=a[i];

  writeln('The winner is ',winner,', scores = ',max);
  readln();
end.