задача 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
- 859 reads
vedro-compota
Sun, 11/07/2021 - 13:28
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)