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

Задача 2 Урок 18:

У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):

Вася    16     485
Коля    17   555
Юра     18   61
..........

-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:

Vasya    N      M

где N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:

Z=MN.

Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.

procedure reshenie(s: string; var accn: string; var accr: integer);
var i, int, o, sht, bal, res, c: integer;
     name, b, sh: string;
begin
 name := ''; sh := ''; b := ''; c := 0;
 for i := 1 to length(s) do
  begin
   val(s[i], int, o);
   if (o <> 0) and (s[i] <> ' ') then name += s[i];
   if (c = 0) and (o = 0) then
    begin
     sh += s[i];
     if s[i + 1] = ' ' then c := 1;
    end
   else
    if (c = 1) and (o = 0) then b += s[i];
  end;
 writeln(name, '   ', sh, '   ', b);
 val(sh, int, o);
 sht := int;
 val(b, int, o);
 bal := int;
 res := bal - sht;
 if accr < res then
  begin
   accr := res;
   accn := name;
  end;
end;

var f1: text;
    filename, st, acn: string;
    acr: integer;
begin
  filename := 'F:\Pascal\урок 18\inp.txt';
  assign(f1, filename);
  reset(f1);
  while not eof(f1) do
   begin
    readln(f1, st);
    reshenie(st, acn, acr);
   end;
  writeln('Победитель: ', acn, ', балл: ', acr);
  readln();
end.