Решение №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
- 1543 reads
vedro-compota
Sat, 08/29/2020 - 20:28
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)