задача 5 урок 18

http://fkn.ktu10.com/?q=node/8694

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

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

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

Решение

program task_5_lesson18;
type
  imy = array[1..3] of string;
  bal = array[1..3] of integer;
procedure otdel(s : string; var name: string; var point: string);
var i, j: integer;
begin
  i := 1;
  while s[i] <> ' ' do
    begin
      name := name + s[i];
      i += 1;
    end;
  for j := i to length(s) do
      if (s[j] >= '0') and (s[j] <= '9') then
        point := point + s[j];
end;
var
  s, vihod: string;
  name, k: imy; // для хранения строк
  point: bal; // для хранения наибольшего point
  i, j, n1, code: integer;
begin
  s := '';
  vihod := 'end';
  i := 0;
  writeln('vvedite name   -   point:');
  while s <> vihod do
   begin
      readln(s);
      i += 1;
      otdel(s, name[i], k[i]);
   end;
  for i := 1 to 3 do
    val(k[i], point[i], code);
  n1 := point[1];
  j := 1;
  for i := 2 to 3 do     // поиск победителя
      if (point[i] >= n1) then
        begin
          n1 := point[i];
          j := i;   // номер имени соответсвующий победителю
        end;
  writeln('pobedil: ',name[j],' --- ', n1);
  readln
end.

Консоль

vvedite name   -   point:
Kirill 7685
Artem      675
Kirill 7685
......
....
end
pobedil: Kirill --- 7685
vedro-compota's picture

засчитано

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