Решение №2 из главы 18.есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N -- число штрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.
Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
program name_ball;
var f1 : text; // секция обьявления переменных
filename, s, symb, name, acc, neg, pos, temp, name_out : string;
n, j, out_neg, out_pos, code, res : integer;
begin // начало тела основной программы
filename := 'E:\pascal_lessons\input.txt';
assign( f1,filename );
reset(f1);
res := 0;
while not eof(f1) do
begin
readln(f1, s);
name := '';
j := 1;
n := 0;
while( j <= length( s ) ) do // обходим строку
begin
symb := s[j];
acc := '';
if ( symb <> ' ' ) and ( n = 0 ) then
name += symb // имя
else
begin
n := 1;
while( symb >= '0' ) and ( symb <= '9' ) do
begin
acc += symb; // накапливаем строку
neg := pos; // предыдущее число
j += 1;
if ( j <= length( s ) ) then // если не вышли за длинну строки
symb := s[j]
else
break;
end;
if( acc <> '' ) then
pos := acc;
end;
j += 1;
end;
Val( neg, out_neg, code ); // преобразуем первую строку
Val( pos, out_pos, code ); // преобразуем вторую строку
if( out_pos - out_neg ) > res then
begin
res := out_pos - out_neg; // баллы
name_out := name; // имя
end;
end;
writeln( name_out,' ', res ); // вывод результата
readln();
end.
- Log in to post comments
- 2031 reads
vedro-compota
Sat, 08/29/2020 - 20:28
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)