Решение №2 из главы 18.есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное

Задача №2 из главы 18

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

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

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

Vasya    N      M

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

Z=M−N.

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

program name_ball;
var f1 : text; // секция обьявления переменных
    filename, s, symb, name, acc, neg, pos, temp, name_out : string;
    n, j, out_neg, out_pos, code, res : integer;
begin // начало тела основной программы
filename := 'E:\pascal_lessons\input.txt';
assign( f1,filename );
reset(f1);
res := 0;
while not eof(f1) do
begin
  readln(f1, s);
  name := '';
  j := 1;
  n := 0;
  while( j <= length( s ) ) do // обходим строку
  begin
    symb := s[j];
    acc := '';
    if ( symb <> ' ' ) and ( n = 0 ) then
       name += symb  // имя
    else
    begin
      n := 1;
      while( symb >= '0' ) and ( symb <= '9' ) do
      begin
        acc += symb; // накапливаем строку
        neg := pos; // предыдущее число
        j += 1;
        if ( j <= length( s ) ) then // если не вышли за длинну строки
            symb := s[j]
        else
            break;
      end;
      if( acc <> '' ) then
         pos := acc;
    end;
    j += 1;
  end;
  Val( neg, out_neg, code ); // преобразуем первую строку
  Val( pos, out_pos, code ); // преобразуем вторую строку
  if( out_pos - out_neg ) > res then
  begin
     res := out_pos - out_neg; // баллы
     name_out := name; // имя
  end;
end;
writeln( name_out,' ', res ); // вывод результата
readln();
end.

vedro-compota's picture

решение засчитано

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