Как работать с текстовым файлом? - Pascal ABC
Формулировка задачи:
Подскажите пожалуйста:
Дан текстовый файл, в котором хранятся данные об учениках нескольких школ: фамилия, имя, отчество, адрес (улица, дом, квартира), школа и класс. Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе
в старших классах (номер школы вводить с клавиатуры).
Программа есть,помогите разобраться с текстовым файлом
Не могу как его составить, в каком формате и как вставить его в код
Решение задачи: «Как работать с текстовым файлом?»
textual
Листинг программы
Program B;
Type
pupil = Record
fio:String;
adr:String;
cl:integer;
shkola:integer;
End;
mas=Array[1..500] of pupil;
Var
a:mas;
i,m,n:integer;
f:text;
s:string;
Begin
n:=0;
assign(f,'shkola.txt');reset(f);
while not Eof(f) do
begin
inc(n);
readln(f,s);
s:=trim(s);
a[n].fio:=copy(s,1,pos('ул.',s)-1);
delete(s,1,pos('ул.',s)-1);
a[n].adr:=copy(s,1,pos('ш.',s)-1);
delete(s,1,pos('ш.',s)+1);
s:=trimleft(s);
a[n].shkola:=StrToInt(copy(s,1,pos(' ',s)-1));
delete(s,1,pos('л',s));
s:=trimleft(s);
a[n].cl:=StrToInt(copy(s,1,length(s)));
end;
close(f);
for i:=1 to n do writeln(a[i].fio:30,a[i].adr:30,a[i].cl:7,a[i].shkola:7);
writeln;
writeln('Введите номер школы, учащиеся которой Вас интересуют');
readln(m);
writeln('Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе в старших классах');
for i:=1 to n do
begin
if (a[i].shkola=m) and (a[i].cl>9) then writeln(a[i].fio:30,a[i].adr:30);
end;
readln;
end.
Объяснение кода листинга программы
- Создается тип данных
pupilс полямиfio,adr,clиshkola. - Создается массив
masтипаpupilна 500 элементов. - Объявляются переменные
a,i,m,nиfдля работы с массивом. - Задается имя файла для чтения и записи -
shkola.txt. - В цикле while считывается информация из файла до конца файла.
- Каждая строка обрабатывается следующим образом:
- С помощью функции
trimудаляются лишние пробелы в начале и конце строки. - Поле
fioвыделяется из строки. - Поле
adrвыделяется из строки. - Поле
clвыделяется из строки. - Поле
shkolaвыделяется из строки. - Строка с номером школы записывается в соответствующее поле ученика.
- Строка с адресом школы записывается в соответствующее поле ученика.
- Номер класса ученика записывается в соответствующее поле ученика.
- Номер школы ученика записывается в соответствующее поле ученика.
- С помощью функции
- После окончания чтения файла закрывается файл.
- Выводится запрос на ввод номера школы, после чего выводится запрос на ввод номера класса старшего класса интересующей школы.
- В цикле for перебираются элементы массива
masот 1 до n. - Если номер школы равен введенному номеру и класс старше 9, то выводится фамилия, имя и адрес ученика.
- Программа завершается с помощью функции
readln.