Задание 2 урок 19
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61..........
-- где:
слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:Vasya N Mгде N
-- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
program project1; Var f1:text; // тип для открытия текстового файла filename, s: string; var max,A,Chtraf,i,j,Ochki, Total, Winner,ch,code:integer; s1,name,s3:string ; ar: array[1..3] of integer; f: boolean; begin filename := 'C:\Users\zamhyr\input.txt'; // путь к файлу assign(f1, filename); { связывание переменной дескриптора с путём к файлу } reset(f1); // открываем файла для чтения writeln('========nachalo faila====='); while not eof(f1) do // пока не достигнут конец файла begin readln(f1, s); // читаем из него очередную строку S1 := ''; f := false; name := ''; for i := 1 to length(s) do begin if (s[i] >= '0') and (s[i] <= '9') then //если символ - цифра begin f := true; S1 := S1 + s[i]; // то добавляю цифру в числовую строку end else //если символ не цифра begin if f then //и флаг поднят begin val(S1, Chtraf); //то получаем штраф из первого набора цифр S1 := '';//обнуляем строку для получения счета f := false; end else if (s[i] <> ' ') then // если не пробел name := name + s[i]; // собираем имя игрока из символов end; end; WriteLn('Winner: ', name); val(S1, Ochki); //получаем счет из последнего набора цифр Total := Ochki - Chtraf; if Total > Winner then begin Winner:= Total; WriteLn('Winner: ', name, ' Total count: ',Winner ); end; end; writeLn('========= konez faila ========='); if Total > Winner then begin Winner:= Total; WriteLn('Winner: ', name, ' Total count: ',Winner ); end; readln(); end.
- Log in to post comments
- 944 reads
vedro-compota
Wed, 02/09/2022 - 20:25
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)