Как работать с текстовым файлом? - Pascal ABC
Формулировка задачи:
Подскажите пожалуйста:
Дан текстовый файл, в котором хранятся данные об учениках нескольких школ: фамилия, имя, отчество, адрес (улица, дом, квартира), школа и класс. Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе
в старших классах (номер школы вводить с клавиатуры).
Программа есть,помогите разобраться с текстовым файлом
Не могу как его составить, в каком формате и как вставить его в код
Листинг программы
- 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;
- Begin
- writeln('Введите количество учащихся');
- readln(n);
- for i:=1 to n do
- begin
- writeln('Введите фамилию и имя ',i,' ученика');
- readln(a[i].fio);
- writeln('Введите адрес ',i,' ученика');
- readln(a[i].adr);
- writeln('Введите номер класса, в котором обучается ',i,' ученик');
- readln(a[i].cl);
- writeln('Введите номер школы, в которой обучается ',i,' ученик');
- readln(a[i].shkola);
- end;
- writeln;
- 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.
Решение задачи: «Как работать с текстовым файлом?»
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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д