Задача 2 урок 18
Primary tabs
Задача 2 урок 18
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........
Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
type arrSTR = array[1..5] of string;
arrINT = array[1..5] of integer;
Var f1:text;
filename, s, winner: string;
name: arrSTR; pPoints: arrINT; points: arrINT;
n,i: integer;
//name имя участника
//pPoints штрафные очки
//points заработанные очки
procedure counting(b: arrINT; var c: arrINT);
var i: integer;
begin
for i:=1 to length(c) do
c[i]:=c[i]-b[i];
end;
function maximum(c: arrINT): integer;
var max: integer;
begin
max := c[1];
if max < c[2] then max := c[2]; //определяем максимальный integer
if max < c[3] then max := c[3];
if max < c[4] then max := c[4];
result:=max;
end;
procedure recordingARR(s: string; n: integer; var a: arrSTR; var b: arrINT; var c: arrINT);
var i, T, Code: integer; k: string; flag: boolean;
begin
flag:=true;
for i:=1 to length(s) do
begin
if Not((s[i]>='0')and(s[i]<='9')) AND (s[i]<>' ') then
a[n]:=a[n]+s[i]
else if (s[i]>='0')and(s[i]<='9') then
begin
k:=k+s[i];
if (s[i+1]=' ') AND flag then
begin
Val(k, T, Code);
begin
b[n]:=T;
k:='';
flag:=false;
end;
end
else if i= length(s) then
begin
Val(k, T, Code);
c[n]:=T;
end;
end;
end;
end;
begin
filename := 'C:\Users\boris\Documents\HTML\itogi_sorev.txt'; // путь к файлу
assign(f1, filename);
reset(f1);
n:=1; //индекс строки
writeln('========nachalo faila=====');
while not eof(f1) do // пока не достигнут конец файла
begin
readln(f1, s); // читаем из него очередную строку
writeln(s); // и выводим её в консоль
recordingARR(s,n,name,pPoints,points);
inc(n);
end;
writeLn('========= konez faila =========');
counting(pPoints,points);
for i:=1 to high(points) do
if points[i]=maximum(points) then //по индексу integer ищем значение string
winner:=name[i];
writeln('The winner is ',winner,', points = ',maximum(points));
readln();
end.- Log in to post comments
- 1634 reads
vedro-compota
Sun, 09/19/2021 - 12:23
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)