Задание 2 урок 19
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61..........
-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N
-- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
program project1;
Var
f1:text; // тип для открытия текстового файла
filename, s: string;
var
max,A,Chtraf,i,j,Ochki, Total, Winner,ch,code:integer;
s1,name,s3:string ;
ar: array[1..3] of integer;
f: boolean;
begin
filename := 'C:\Users\zamhyr\input.txt'; // путь к файлу
assign(f1, filename); { связывание переменной дескриптора
с путём к файлу }
reset(f1); // открываем файла для чтения
writeln('========nachalo faila=====');
while not eof(f1) do // пока не достигнут конец файла
begin
readln(f1, s); // читаем из него очередную строку
S1 := '';
f := false;
name := '';
for i := 1 to length(s) do
begin
if (s[i] >= '0') and (s[i] <= '9') then //если символ - цифра
begin
f := true;
S1 := S1 + s[i]; // то добавляю цифру в числовую строку
end
else //если символ не цифра
begin
if f then //и флаг поднят
begin
val(S1, Chtraf); //то получаем штраф из первого набора цифр
S1 := '';//обнуляем строку для получения счета
f := false;
end
else if (s[i] <> ' ') then // если не пробел
name := name + s[i]; // собираем имя игрока из символов
end;
end;
WriteLn('Winner: ', name);
val(S1, Ochki); //получаем счет из последнего набора цифр
Total := Ochki - Chtraf;
if Total > Winner then
begin
Winner:= Total;
WriteLn('Winner: ', name, ' Total count: ',Winner );
end;
end;
writeLn('========= konez faila =========');
if Total > Winner then
begin
Winner:= Total;
WriteLn('Winner: ', name, ' Total count: ',Winner );
end;
readln();
end.- Log in to post comments
- 1246 reads
vedro-compota
Wed, 02/09/2022 - 20:25
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)