Задача 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
- 1439 reads
vedro-compota
Sun, 10/03/2021 - 13:38
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)