Переписать сведения из файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла - 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.

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


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

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

5   голосов , оценка 4.4 из 5
Похожие ответы