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