Урок 18 задача 2. Чтение данных -- Работа с файлами в Паскаль
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485
Коля 17 555
Юра 18 61
где: слева указаны имена участников, а справа число баллов.
Первое число в каждой строке -- штрафные баллы набранные участниками, а второе число -- "положительные баллы", то есть если у нас есть строка:
Vasya N M
где N -- число шрафных баллов, а M - число баллов положительных, то итоговая оценка Васи Z вычисляется как разность:
Z=M−N.
Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
Var f1 : text; // тип для открытия текстового файла filename, fail_st,pobed_im : string; pobeditel : integer; procedure opr_2(pob_ima: string; pob_rez:integer;var pobeditel: integer;var pobed_im:string); begin if( pobeditel < pob_rez) then begin pobeditel:= pob_rez; pobed_im:= pob_ima ; end; end; procedure opr_1(fail_st: string); // начало объявления процедуры var opr_cifra,chislo_v: boolean; j,i,intChislo,Code, chislo_1,chislo_2,chs_viv: integer; m,chi_1,chi_2,ima_viv : string; begin chi_1 := ''; chi_2 := ''; m := ''; ima_viv := ''; // инициализация переменных opr_cifra:=true; chislo_v:= true; for i:=1 to length(fail_st) do begin if (fail_st[i]=' ') or (fail_st[i]>='0') and (fail_st[i]<='9') then m := m + fail_st[i] else ima_viv := ima_viv + fail_st[i]; end; for j:=1 to length(m) do begin if (m[j]=' ') and (opr_cifra = false) then begin opr_cifra:=true; chislo_v :=false; end; if (m[j]>='0') and (m[j]<='9') then begin opr_cifra := false; if( chislo_v =true) then chi_1 := chi_1 + m[j] else chi_2 := chi_2 + m[j]; end; end; Val(chi_1, intChislo, Code); chislo_1 := intChislo; Val(chi_2, intChislo, Code); chislo_2 := intChislo; chs_viv := chislo_2 - chislo_1 ; opr_2( ima_viv ,chs_viv,pobeditel,pobed_im); end; begin pobeditel:= 0; filename := 'D:\Pascal\Lab18\1\input.txt'; // путь к файлу WriteLn('Put k failu programmy: '); WriteLn(ParamStr(0)); assign(f1, filename); {$I-} reset(f1); {$I+} // попытка открыть файл на чтение с подавлением ошибки if IOResult <> 0 then // если есть ошибки begin writeLn('File ', filename, ' ne naiden!'); end else // если удалось открыть на чтение begin writeLn('File ', filename, ' suchectvuet. I vot ego soderzimoe:'); while not eof(f1) do begin readln(f1, fail_st); opr_1 (fail_st ); end; end; writeln('pobedil ', pobed_im, ' shet ', pobeditel); writeLn('========= konez faila ========='); readln(); end.
- Log in to post comments
- 504 reads