Переписать сведения из файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла - Pascal
Формулировка задачи:
Нужно создать файл, содержащий информацию о 10 студентах(Ф.И.О.,три оценки, номер группы). Переписать сведения из этого файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла.
с собственным модулем...... Очень пршу помогите....
Решение задачи: «Переписать сведения из файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла»
textual
Листинг программы
unit stud; interface uses crt; const n=10;//количество записей type TStud=record//тип записей fio:string[15]; ocn:array[1..3] of byte; srb:real; end; tfile=file of TStud;//тип файла var f:tfile; g:text; procedure CreateFile; procedure ReadFile; procedure Sort; procedure WriteFile; implementation procedure CreateFile;//создание типизированного файла var i,j:byte; st:TStud; begin assign(f,'data'); rewrite(f); writeln('Введите данные ',n,' студентов'); for i:=1 to n do begin writeln('Студент ',i); with st do begin write(' Фамилия И.О.: ');readln(fio); writeln(' Оценки по 3 предметам:'); srb:=0; for j:=1 to 3 do begin write(' Оценка ',j,'='); readln(ocn[j]); srb:=srb+ocn[j]; end; srb:=srb/3; write(f,st); end; end; close(f); clrscr; end; procedure ReadFile;//чтение файла и вывод на экран var st:TStud; i:byte; begin reset(f); writeln('Исходный файл:':30); writeln; writeln('-------------------------------------'); writeln('| Фамилия И.О. | Оценки | Ср.балл |'); writeln('-------------------------------------'); while not eof(f) do begin read(f,st); with st do begin gotoXY(1,whereY);write('| ',fio); gotoXY(18,whereY);write('|'); for i:=1 to 3 do write(' ',ocn[i]); gotoXY(27,whereY);write('|',srb:6:2); gotoXY(37,whereY);writeln('|'); end; end; writeln('-------------------------------------'); close(f); end; procedure Sort;//сортировка типизированного файла var st,a,b:Tstud; i,j:byte; begin reset(f); for i:=0 to filesize(f)-2 do for j:=i+1 to filesize(f)-1 do begin seek(f,i); read(f,a); seek(f,j); read(f,b); if a.srb>b.srb then begin st:=a; a:=b; b:=st; seek(f,i); write(f,a); seek(f,j); write(f,st); end; end; close(f); end; procedure WriteFile;//вывод в текстовый файл var st:TStud; i:byte; begin reset(f); assign(g,'vyvod.txt'); rewrite(g); writeln(g,'Spisok gruppy po vozrastaniyu srednego balla'); writeln(g); writeln(g,'-------------------------------------'); writeln(g,'| Familia I.O. | Ocenki | Sr.ball |'); writeln(g,'-------------------------------------'); while not eof(f) do begin read(f,st); with st do begin write(g,'|',fio:15,' |'); for i:=1 to 3 do write(g,' ',ocn[i]); write(g,' |',srb:7:2); writeln(g,' |'); end; end; writeln(g,'-------------------------------------'); close(g); writeln('Отсортированные данные записаны в файл VYVOD.txt'); readln end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д