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

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

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

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

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

Решение:

program u18z06;
type arrInt = array [1..3] of integer;
     arrStr = array [1..3] of string;
var s,s0:string;
  i,j,Code,k,m,maxScore:integer;
  ball: arrInt;
  name: arrStr;

procedure abc123(s:string; var name:string; var ball:integer);
begin
  j:=1;
  for i:=1 to length(s) do
  begin
    if(s[i]>='0')and(s[i]<='9') then
      s0:=s0+s[i]
    else
    begin
      if s[i]<>' ' then
        name:=name+s[i];
      if s0<>'' then
      begin
        s0:='';
        j:=j+1;
      end;
    end;
    Val(s0,ball,Code);
  end;
end;

procedure pobeda(name:arrStr; ball:arrInt);
begin
  for i:=1 to 3 do
  begin
    write(name[i],'   ',ball[i]);
    writeln();
    if ball[i]>maxScore then
    begin
      maxScore:=ball[i];
      m:=i;
    end;
  end;
  write('Pobedil: ',name[m],'   | rezultat: ',ball[m]);
end;

begin
  while (s<>'end') do
  begin
    writeln('vvedite stroku: ');
    readln(s);
    k:=k+1;
    abc123(s,name[k],ball[k]);
  end;
  maxScore:=0;
  m:=0;
  pobeda(name,ball);
  readln();
end.

Консоль:

vvedite stroku: 
dima 123
vvedite stroku: 
misha      321
vvedite stroku: 
katya    111
vvedite stroku: 
end
dima   123
misha   321
katya   111
Pobedil: misha   | rezultat: 321