Как работать с текстовым файлом? - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста: Дан текстовый файл, в котором хранятся данные об учениках нескольких школ: фамилия, имя, отчество, адрес (улица, дом, квартира), школа и класс. Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе в старших классах (номер школы вводить с клавиатуры). Программа есть,помогите разобраться с текстовым файлом Не могу как его составить, в каком формате и как вставить его в код
Листинг программы
  1. Program B;
  2. Type
  3. pupil = Record
  4. fio:String;
  5. adr:String;
  6. cl:integer;
  7. shkola:integer;
  8. End;
  9. mas=Array[1..500] of pupil;
  10. Var
  11. a:mas;
  12. i,m,n:integer;
  13. Begin
  14. writeln('Введите количество учащихся');
  15. readln(n);
  16. for i:=1 to n do
  17. begin
  18. writeln('Введите фамилию и имя ',i,' ученика');
  19. readln(a[i].fio);
  20. writeln('Введите адрес ',i,' ученика');
  21. readln(a[i].adr);
  22. writeln('Введите номер класса, в котором обучается ',i,' ученик');
  23. readln(a[i].cl);
  24. writeln('Введите номер школы, в которой обучается ',i,' ученик');
  25. readln(a[i].shkola);
  26. end;
  27. writeln;
  28. for i:=1 to n do writeln(a[i].fio:30,a[i].adr:30,a[i].cl:7,a[i].shkola:7);
  29. writeln;
  30. writeln('Введите номер школы, учащиеся которой Вас интересуют');
  31. readln(m);
  32. writeln('Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе в старших классах');
  33. for i:=1 to n do
  34. begin
  35. if (a[i].shkola=m) and (a[i].cl>9) then writeln(a[i].fio:30,a[i].adr:30);
  36. end;
  37. readln;
  38. end.

Решение задачи: «Как работать с текстовым файлом?»

textual
Листинг программы
  1. Program B;
  2. Type
  3. pupil = Record
  4. fio:String;
  5. adr:String;
  6. cl:integer;
  7. shkola:integer;
  8. End;
  9. mas=Array[1..500] of pupil;
  10. Var
  11. a:mas;
  12. i,m,n:integer;
  13. f:text;
  14. s:string;
  15. Begin
  16. n:=0;
  17. assign(f,'shkola.txt');reset(f);
  18. while not Eof(f) do
  19.     begin
  20.     inc(n);
  21.     readln(f,s);
  22.     s:=trim(s);
  23.     a[n].fio:=copy(s,1,pos('ул.',s)-1);
  24.     delete(s,1,pos('ул.',s)-1);
  25.     a[n].adr:=copy(s,1,pos('ш.',s)-1);
  26.     delete(s,1,pos('ш.',s)+1);
  27.     s:=trimleft(s);
  28.     a[n].shkola:=StrToInt(copy(s,1,pos(' ',s)-1));
  29.     delete(s,1,pos('л',s));
  30.     s:=trimleft(s);
  31.     a[n].cl:=StrToInt(copy(s,1,length(s)));
  32.     end;
  33. close(f);
  34. for i:=1 to n do writeln(a[i].fio:30,a[i].adr:30,a[i].cl:7,a[i].shkola:7);
  35. writeln;
  36. writeln('Введите номер школы, учащиеся которой Вас интересуют');
  37. readln(m);
  38. writeln('Вывести на экран фамилию, имя и адрес тех учеников, кто учится в данной школе в старших классах');
  39. for i:=1 to n do
  40. begin
  41. if (a[i].shkola=m) and (a[i].cl>9) then writeln(a[i].fio:30,a[i].adr:30);
  42. end;
  43. readln;
  44. end.

Объяснение кода листинга программы

  1. Создается тип данных pupil с полями fio, adr, cl и shkola.
  2. Создается массив mas типа pupil на 500 элементов.
  3. Объявляются переменные a, i, m, n и f для работы с массивом.
  4. Задается имя файла для чтения и записи - shkola.txt.
  5. В цикле while считывается информация из файла до конца файла.
  6. Каждая строка обрабатывается следующим образом:
    • С помощью функции trim удаляются лишние пробелы в начале и конце строки.
    • Поле fio выделяется из строки.
    • Поле adr выделяется из строки.
    • Поле cl выделяется из строки.
    • Поле shkola выделяется из строки.
    • Строка с номером школы записывается в соответствующее поле ученика.
    • Строка с адресом школы записывается в соответствующее поле ученика.
    • Номер класса ученика записывается в соответствующее поле ученика.
    • Номер школы ученика записывается в соответствующее поле ученика.
  7. После окончания чтения файла закрывается файл.
  8. Выводится запрос на ввод номера школы, после чего выводится запрос на ввод номера класса старшего класса интересующей школы.
  9. В цикле for перебираются элементы массива mas от 1 до n.
  10. Если номер школы равен введенному номеру и класс старше 9, то выводится фамилия, имя и адрес ученика.
  11. Программа завершается с помощью функции readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы