Pascal Урок 17 Задача 6

Pascal Урок 17 Задача 6

Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485
Коля 555
Юра 61
..........
....
end // признак завершения ввода
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.

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

Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:

program U15Z6;
type
  a=array[1..3] of integer;
  b=array[1..3] of string;
var
  t:b;
  l:a;
  i,d,f,n,max,ball: integer;
  w,k,s,name:string;
procedure Nameball(s: string; var name: string; var ball: integer);
begin
  for i:= 1 to length(s) do
  begin
    if (s[i]>='0')and(s[i]<='9') then
    begin
      w:=w+s[i];
      val(w,f);
      ball:=f;
    end
    else if (s[i]<>' ') then
    begin
      k:=k+s[i];
      name:=k;
    end;
    end;
    w:='';
    k:='';
end;
begin
  d:=1;
  while (s<>'end') do
  begin
    readln(s);
    Nameball(s,name,ball);
      t[d]:=name;
      l[d]:=ball;
      d:=d+1;
  end;
  for d:= low(l) to high(l) do
  begin
    if l[d] > max then
    begin
      max:=l[d];
      inc(n);
    end;
  end;
  d:=n;
    writeln('Pobeditel: ',t[d]);
    writeln('S kolichestvom ballov: ',max);
    readln();
end.                     
vedro-compota's picture

A  B  C  D
7  5   9  4

-- имя победителя определиться неправильно (В вместо C)

_____________
матфак вгу и остальная классика =)

program U15Z6;
type
  a=array[1..3] of integer;
  b=array[1..3] of string;
var
  t:b;
  l:a;
  i,d,f,n,max,ball: integer;
  w,k,s,name:string;
procedure Nameball(s: string; var name: string; var ball: integer);
begin
  for i:= 1 to length(s) do
  begin
    if (s[i]>='0')and(s[i]<='9') then
    begin
      w:=w+s[i];
      val(w,f);
      ball:=f;
    end
    else if (s[i]<>' ') then
    begin
      k:=k+s[i];
      name:=k;
    end;
    end;
    w:='';
    k:='';
end;
begin
  d:=1;
  while (s<>'end') do
  begin
    readln(s);
    Nameball(s,name,ball);
      t[d]:=name;
      l[d]:=ball;
      d:=d+1;
  end;
  for d:= low(l) to high(l) do
  begin
    if l[d] > max then
    begin
      max:=l[d];
      n:=d;
    end;
  end;
  d:=n;
    writeln('Pobeditel: ',t[d]);
    writeln('S kolichestvom ballov: ',max);
    readln();
end.