Урок 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
- 1306 reads