задача 2 урок 19
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
Решение
program task_2_lesson19;
procedure name(s: string; var imy: string); // имя
var i: integer;
begin
i := 1;
imy := '';
while s[i] <> ' ' do
begin
imy := imy + s[i];
i := i + 1;
end;
end;
procedure point(s: string; var shtraf: string; var ball: string); // шрафы и очки
var i: integer; // в виде строк
p: string;
begin
p := '';
for i :=1 to length(s) do
begin
if ((s[i] >= '0') and (s[i] <= '9')) then
p := p + s[i]
else if s[i + 1] <> ' ' then
begin
shtraf := p;
p := '';
end;
end;
ball := p;
end;
function finalPoint(shtraf, ball: string) : integer; // общий счет
var n, n1, code: integer;
begin
val(shtraf, n, code);
val(ball, n1, code);
result := n1 - n;
end;
var filename, s, shtraf, ball, imy, winner: string;
i, a: integer;
f1: text;
begin
winner := ''; // сохраняет имя соответсвующее большему балу
imy := ''; // хранит следующее имя
shtraf := ''; // штрафные баллы
ball := ''; // баллы
a := 0; // текущий общий балл
i := 0; // наибольший балл
filename := 'C:\Users\XE\Documents\Pascal\input2.txt';
assign(f1, filename);
reset(f1);
while not eof(f1) do
begin
readln(f1,s);
writeln(s);
name(s, imy);
point(s, shtraf, ball);
a := finalPoint(shtraf, ball);
if a >= i then
begin
winner := imy;
i := a;
end;
end;
writeln();
write('Pobedil ',winner, ' nabral ', i,' ballov');
readln
end. Консоль
Vasia 16 485 Kolya 17 555 Ura 18 61 Pety 15 365 Sergey 19 500 Pobedil Kolya nabral 538 ballov
- Log in to post comments
- 1343 reads
vedro-compota
Sun, 11/07/2021 - 13:28
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)