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

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

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

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

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

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

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

procedure getData(str: string; var name: string; var ball: integer);

Решение

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

Консоль

vvedite name   -   point:
John  784
MIsha 566
Stenli 687
end
pobedil: John --- 784
vedro-compota's picture

засчитано

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