Урок 19. Задача 2.
Primary tabs
У вас есть текстовый файл с информацией об итогах соревнований (каждая строка имеет формат: имя + произвольное число пробелов + балл 1 + произвольное число пробелов + балл 2):
Вася 16 485 Коля 17 555 Юра 18 61 ..........Напишите программу, которая определяет победителя и его итоговый балл (прочитав данный файл построчно).
По возможности разбивайте код на процедуры и функции.
type ar = array[1..20] of string; type br = array[1..10] of integer; Var f1:text; // тип для открытия текстового файла filename, s: string; aRs :ar; bRs :br; cnt, i :integer; function count(var cnt :integer) :integer; begin cnt := cnt + 1; count := cnt; end; procedure make_array_string(s :string); var i :integer; str :string; fl :boolean; begin for i := 1 to length(s) do if (i = length(s)) and (s[i] <> '.') then begin str := str + s[i]; count(cnt); aRs[cnt] := str; end else if (s[i] <> ' ') and (s[i] <> '.') then begin str := str + s[i]; fl := true; end else if s[i] = ' ' then if fl then begin count(cnt); aRs[cnt] := str; str := ''; fl := false; end else continue; end; procedure make_array_integer(aRs :ar; cnt :integer); var i, j, vl_I, vl_C :integer; s :string; begin j := 1; for i := 1 to cnt do begin s := aRs[i]; val(s, vl_I, vl_C); if vl_C = 0 then begin bRs[j] := vl_I; j := j + 1; end; end; end; begin cnt := 1; filename := 'C:\Pascal\U_0\input.txt'; // путь к файлу 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, s); make_array_string(s); end; end; make_array_integer(aRs, cnt); if (bRs[2] - bRs[1] > bRs[4] - bRs[3]) and (bRs[6] - bRs[5] < bRs[4] - bRs[3]) then writeln('Vasya - ', bRs[2] - bRs[1]) else if bRs[6] - bRs[5] < bRs[4] - bRs[3] then writeln('Kolya - ', bRs[4] - bRs[3]) else writeln('Urya - ', bRs[6] - bRs[5]); readln(); end.
File C:\Pascal\U_0\input.txt suchectvuet. I vot ego soderzimoe: Kolya - 538
- Log in to post comments
- 1520 reads
vedro-compota
Wed, 10/05/2022 - 19:14
Permalink
if s[i] = ' ' then
-- можно переписать без вложенности + ветка else когда находится в конце витка только с continue не нужна.
_____________
матфак вгу и остальная классика =)
Dennis80
Sun, 10/09/2022 - 12:16
Permalink
type ar = array[1..20] of
vedro-compota
Sun, 10/09/2022 - 14:05
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)