Типизированые файлы (студенты) - Pascal
Формулировка задачи:
мне нужно сформыровать файл о студенте (имя, дата,стать,курс,адреса,телефон,оценка за сесию и стипендия ) .
А потом получить информацию о всех студентах которие имеют телефон.
сделал наброски и зашел в тупик
program project1; type student=record imia:string; data:string; stat:string; kyrs:byte; adresa:string; tel: longint ; sesia:byte; stypyha:char; end; var t:text; a,n,i:integer; d:student; mas : array [1..11111]of student ; begin with d do begin writeln('vvedit kilkist studentiv'); readln(n); assign(t,'t.txt'); rewrite(t); writeln('vvedit prizvuche'); readln(imia); writeln(t,imia); writeln('vvedit daty'); readln(data); writeln(t,data); writeln('vvedit stat'); readln(stat); writeln(t,stat); writeln('vvedit kyrs'); readln(kyrs); writeln(t,kyrs); writeln ('vvedit telefon'); readln (tel);writeln (t,tel); writeln('vvedit adresu'); readln(adresa); writeln(t,adresa); writeln('vvedit ocincy'); readln(sesia); writeln(t,sesia); writeln('vvedit chy otrymye stipendiy(+/-)'); readln(stypyha); writeln(t,stypyha); end; close(t); reset (t); for i:=1 to a do begin writeln(mas[i].imia) ; writeln(mas[i].data); writeln(mas[i].stat); writeln(mas[i].kyrs); writeln (mas[i].tel); writeln(mas[i].adresa); writeln(mas[i].sesia); writeln(mas[i].stypyha); end; end.
Решение задачи: «Типизированые файлы (студенты)»
textual
Листинг программы
const ans : Array[Boolean] Of String[3] = ('Net', 'Da'); type F_I_O = record familia : String[20]; imia : String[10]; otchestvo : String[25]; end; Student = record fio : F_I_O; date : String[10]; kurs : Byte; adres : String; telefon : String[15]; sessia : Byte; stipendia : Boolean; end; var f : File Of Student; i, n : Byte; s : Student; t : String[3]; begin Write('n='); ReadLn(n); //запись в файл Assign(f, 'f.dat'); ReWrite(f); for i := 1 to n do begin with s do begin with fio do begin Write('Familia: '); ReadLn(familia); Write('Imia: '); ReadLn(imia); Write('Otchestvo: '); ReadLn(otchestvo); end; Write('Data: '); ReadLn(date); Write('Kurs: '); ReadLn(kurs); Write('Adres: '); ReadLn(adres); Write('Telefon: '); ReadLn(telefon); Write('Sessia: '); ReadLn(sessia); Write('Stipendia [Da / Net]: '); ReadLn(t); stipendia := (t = 'Da'); end; Write(f, s); WriteLn; end; Close(f); //чтение из файла Reset(f); Seek(f, 0); i := 0; while Not(Eof(f)) do begin Read(f, s); with s do if (Length(telefon) > 0) then begin Inc(i); WriteLn(i, '-tyj student:'); with fio do WriteLn(' FIO: ', familia, ' ', imia, ' ', otchestvo); WriteLn(' Data: ', date); WriteLn(' Kurs: ', kurs); WriteLn(' Adres: ', adres); WriteLn(' Telefon: ', telefon); WriteLn(' Ocenka za sessiu: ', sessia); WriteLn(' Stipendia: ', ans[stipendia]); end; end; end.
Объяснение кода листинга программы
- В начале объявляются переменные ans, f_io, student, f, i, n, s, t, date, kurs, adres, telefon, sessia, stipendia.
- Переменная ans инициализируется как массив типа String[3] со значениями по умолчанию ('Net', 'Da').
- Тип F_I_O определяется как запись с полями: familia (String[20]), imia (String[10]), otchestvo (String[25]).
- Тип Student определяется как запись с полями: fio (F_I_O), date (String[10]), kurs (Byte), adres (String), telefon (String[15]), sessia (Byte), stipendia (Boolean).
- Переменная f инициализируется как файл типа File Of Student.
- Переменная i инициализируется как байт.
- Переменная n считывается из файла.
- В цикле for происходит запись в файл для каждого студента.
- Внутри цикла считывается информация о каждом студенте и записывается в файл.
- После окончания записи закрывается файл.
- Затем файл переключается на начало и сбрасывается позиция.
- В цикле while происходит чтение информации из файла до тех пор, пока не будет достигнут конец файла.
- Для каждого студента считанного из файла выводится информация о нем.
- В конце программы выводится количество студентов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д