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

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

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

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

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

type arrSTR = array[1..5] of string;
     arrINT = array[1..5] of integer;
Var f1:text;
  filename, s, winner: string;
  name: arrSTR; pPoints: arrINT; points: arrINT;
  n,i: integer;
  //name     имя участника
  //pPoints  штрафные очки
  //points   заработанные очки
procedure counting(b: arrINT; var c: arrINT);
var i: integer;
begin
  for i:=1 to length(c) do
    c[i]:=c[i]-b[i];
end;
function maximum(c: arrINT): integer;
var max: integer;
begin
  max := c[1];
  if max < c[2] then max := c[2]; //определяем максимальный integer
  if max < c[3] then max := c[3];
  if max < c[4] then max := c[4];
  result:=max;
end;
procedure recordingARR(s: string; n: integer; var a: arrSTR; var b: arrINT; var c: arrINT);
var i, T, Code: integer; k: string; flag: boolean;
begin
    flag:=true;
    for i:=1 to length(s) do
      begin
        if Not((s[i]>='0')and(s[i]<='9')) AND (s[i]<>' ') then
          a[n]:=a[n]+s[i]
        else if (s[i]>='0')and(s[i]<='9') then
          begin
          k:=k+s[i];
          if (s[i+1]=' ') AND flag then
            begin
              Val(k, T, Code);
              begin
                b[n]:=T;
                k:='';
                flag:=false;
              end;
            end
          else if i= length(s) then
            begin
              Val(k, T, Code);
              c[n]:=T;
            end;
          end;
      end;
end;
begin
  filename := 'C:\Users\boris\Documents\HTML\itogi_sorev.txt'; // путь к файлу
  assign(f1, filename);
  reset(f1);
  n:=1; //индекс строки
  writeln('========nachalo faila=====');
  while not eof(f1) do // пока не достигнут конец файла
    begin
      readln(f1, s);  // читаем из него очередную строку
      writeln(s); // и выводим её в консоль
      recordingARR(s,n,name,pPoints,points);
      inc(n);
    end;
  writeLn('========= konez faila =========');
  counting(pPoints,points);
  for i:=1 to high(points) do
     if points[i]=maximum(points) then //по индексу integer ищем значение string
       winner:=name[i];
  writeln('The winner is ',winner,', points = ',maximum(points));
  readln();
end.
vedro-compota's picture

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

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