Переменные из файла - Pascal ABC
Формулировка задачи:
Есть задача. В ней надо посчитать на сколько предметов с атрибутом 8 больше, чем с 9. Т.е. в файле 1.txt просто
ABC 8
BCD 8
CDE 9
(нетрудно видеть, что на 2)
Никак не могу присвоить переменным эти предметы. Из файла что попало присваивается, алгоритм подсчёта - тоже тот ещё писец.
Решение задачи: «Переменные из файла»
textual
Листинг программы
var f:text; s:string; a,a8,a9:integer; begin assign(f,'1.txt'); reset(f); a8:=0; a9:=0; while not eof(f) do begin readln(f,s); delete(s,1,pos(' ',s)); a:=strtoint(s); if a=8 then inc(a8) else if a=9 then inc(a9); end; close(f); write('С атрибутом 8 на ',a8-a9,' больше'); end.
Объяснение кода листинга программы
- var f: text; — объявление переменной f типа text
- s: string; — объявление переменной s типа string
- a, a8, a9: integer; — объявление трех переменных типа integer
- assign(f, '1.txt'); — присвоение имени файла переменной f
- reset(f); — очистка файла f
- a8 := 0; — присвоение начальных значений переменным a8 и a9
- a9 := 0; — присвоение начальных значений переменным a8 и a9
- while not eof(f) do — цикл чтения строк из файла до конца файла
- readln(f, s); — чтение строки из файла в переменную s
- delete(s, 1, pos(' ', s)); — удаление первого символа пробела из строки s
- a := strtoint(s); — преобразование строки в целое число и сохранение в переменную a
- if a = 8 then inc(a8) — если значение a равно 8, увеличить значение переменной a8
- else if a = 9 then inc(a9); — иначе, если значение a равно 9, увеличить значение переменной a9
- end; — конец цикла
- close(f); — закрытие файла
- write('С атрибутом 8 на ', a8 - a9, ' больше'); — вывод строки на экран
- end. — завершение программы