Задача 2 Урок 18
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
program U18Z2;
type sarr = array [1..100] of string;
iarr = array [1..100] of integer;
Var n:sarr;
b:iarr;
f1:text;
filename,s: string;
i,j:integer;
procedure getData(str:string; j:integer; var name:sarr; var ball:iarr);
var sb:string;
code,t:integer;
begin
sb:='';
for i:=1 to length(s) do
begin
if (str[i]>='0') and (str[i]<='9') then
sb:=sb+s[i]
else
begin
if (str[i]<>' ') then
name[j]:=name[j]+str[i];
if (sb<>'') then
begin
val(sb,ball[j],code);
sb:='';
end;
end;
end;
val(sb,t,code);
ball[j]:=t-ball[j];
end;
procedure winner(nam:sarr; bal:iarr; j:integer);
var w:integer;
begin
w:=1;
for i:=2 to j do
if (bal[i]>bal[w]) then
w:=i;
writeln('winner: ',nam[w],' ',bal[w]);
end;
begin
filename := 'C:\Users\admin\Desktop\pascal\u18z2.txt';
assign(f1, filename);
reset(f1);
j:=0;
writeln('========nachalo faila=====');
while not eof(f1) do
begin
readln(f1, s);
writeln(s);
j:=j+1;
getData(s,j,n,b);
end;
writeLn('========= konez faila =========');
winner(n,b,j);
readln();
end. - Log in to post comments
- 1791 reads
vedro-compota
Sun, 10/03/2021 - 13:38
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)