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

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

У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485
Коля 17 555
Юра 18 61
..........
-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:

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

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

program lesson18_2;
type
    myArr = array[1..10] of integer;
procedure getData(s: string; var name: string; var ball: integer);
var
    str1Ball, str2Ball: string;
    b: boolean;
    i, num1, num2: integer;
begin
    b := true;
    str1Ball := '';
    str2Ball := '';
    for i := 1 to length(s) do
        if (s[i] >= '0') and (s[i] <= '9') then
        begin
            if b then
                str1Ball := str1Ball + s[i]
            else
                str2Ball := str2Ball + s[i];

            if s[i + 1] = ' ' then
                b := false
        end else if s[i] <> ' ' then
            name := name + s[i];

	val(str1Ball, num1);
	val(str2Ball, num2);
    ball := num2 - num1;
end;

function index(a: myArr): integer;
var
    i, max, ind : integer;
begin
    max := 0;
    for i := 1 to length(a) do
        if a[i] > max then
        begin
            max := a[i];
            ind := i;
    	end;
    result := ind;
end;

var
    f1: text;
    s, filename, name: string;
    strArr: array[1..10] of string;
    intArr: myArr;
    i, ball: integer;
begin
    filename := 'D:\Pascal\Uroc18\tabl.txt';

    assign(f1, filename);

    reset(f1);

    ball := 0;
    i := 1;
    while not eof(f1) do
    begin
        readln(f1, s);
        name := '';
        getData(s, name, ball);
        strArr[i] := name;
        intArr[i] := ball;
        i := i + 1;
        if i > length(intArr) then
            break;
    end;

    i := index(intArr);

    writeln('winner: ', strArr[i], ' ', intArr[i]);
    readln();
end.
vedro-compota's picture

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

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