Задача 2 Урок 18
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
procedure reshenie(s: string; var accn: string; var accr: integer); var i, int, o, sht, bal, res, c: integer; name, b, sh: string; begin name := ''; sh := ''; b := ''; c := 0; for i := 1 to length(s) do begin val(s[i], int, o); if (o <> 0) and (s[i] <> ' ') then name += s[i]; if (c = 0) and (o = 0) then begin sh += s[i]; if s[i + 1] = ' ' then c := 1; end else if (c = 1) and (o = 0) then b += s[i]; end; writeln(name, ' ', sh, ' ', b); val(sh, int, o); sht := int; val(b, int, o); bal := int; res := bal - sht; if accr < res then begin accr := res; accn := name; end; end; var f1: text; filename, st, acn: string; acr: integer; begin filename := 'F:\Pascal\урок 18\inp.txt'; assign(f1, filename); reset(f1); while not eof(f1) do begin readln(f1, st); reshenie(st, acn, acr); end; writeln('Победитель: ', acn, ', балл: ', acr); readln(); end.
- Log in to post comments
- 1041 reads