Урок 18 (Решенная задача номер 2)
Primary tabs
Урок 18 (Решенная задача номер 2)
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mде N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
type MasCis = array[1..5] of integer; Masstring = array[1..5] of string; var f1 : text; filename, s: string; i : integer; globalmassivcisl : MasCis; globalmassiimeny : Masstring; procedure RazdelStrokiNaMassivImeni(h : string; nomer : integer; var MasivImy : Masstring); var g: integer; stringcisla : string; begin for g := 1 to length(h) do if (h[g] > '9') and (h[g] <> ' ') then MasivImy[nomer] := MasivImy[nomer] + h[g]; end; procedure RazdelNaBall(h : string; nomer : integer; var MasivBalPlus : MasCis); var g, cislo, c : integer; cislstr : string; d : boolean; begin for g := 1 to length(h) do begin if (h[g-1] >= '0') and (h[g-1] <= '9') and (h[g] = ' ') then begin val(cislstr, cislo, c); MasivBalPlus[nomer] := cislo; cislstr := ''; Inc(d); end; if (h[g] >= '0') and (h[g] <= '9') then cislstr := cislstr + h[g]; if (d = true) and (g = length(h)) then begin val(cislstr, cislo, c); MasivBalPlus[nomer] := cislo - MasivBalPlus[nomer]; end; end; end; function OpredelitPobed(arayBal : MasCis) : integer; var g, pobed : integer; begin for g := 1 to 3 do if (arayBal[g] > pobed) then begin pobed := arayBal[g]; result := g; end; end; begin filename := '/home/rm/Pascal/unput.txt'; assign(f1, filename); reset(f1); i := 1; while not eof(f1) do begin readln(f1, s); RazdelStrokiNaMassivImeni(s, i, globalmassiimeny); RazdelNaBall(s, i, globalmassivcisl); Inc(i); end; i := 0; for i := 1 to 3 do begin if (i = OpredelitPobed(globalmassivcisl)) then writeln('Pobeditel nomer - ', i, ' Ego Imy - ', globalmassiimeny[i]); end; end.
- Log in to post comments
- 771 reads