Задача 2 Урок 18
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
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.- Log in to post comments
- 1376 reads