Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Анкетные данные на абитуриентов в конце методического пособия. filetype=file of data;



Текст программы:

program sortirovka;

uses crt;

type data=record

fio:string[30];

godr,godo:integer;

ates:record

mat,fiz,rus:integer;

end;

haus:boolean;

ekz:record

mat,fiz,rus:integer;

end;

end;

filetype=file of data;

var files,a,b,c:filetype;

z,n:integer; {для подсчета числа серий}

eor:boolean; {индикатор конца серии}

keys:char;

buf,stu:data;

procedure copys(var x,y:filetype);

var buf1:data;

begin

read(x,buf);write(y,buf);

if eof(x) then eor:=true

else begin

{заглядываем вперед}

read(x,buf1);

{возвращаемся на исходную запись}

seek(x,filepos(x)-1);

eor:=buf1.fio<buf.fio;

end;

end;

procedure copyrun(var x,y:filetype);

{переписать серии из x в y}

begin

repeat

copys(x,y);

until eor;

end;

procedure mergerun;

{слияние серий из А и В в С}

var bufa,bufb:data;

begin

repeat

read(a,bufa);seek(a,filepos(a)-1);

read(b,bufb);seek(b,filepos(b)-1);

if bufa.fio<bufb.fio

then begin;copys(a,c);if eor then copyrun(b,c);end

else begin;copys(b,c);if eor then copyrun(a,c);end;

until eor

end;

procedure distribute; {из С в А и В}

begin

reset(c);rewrite(a);rewrite(b);

repeat

copyrun(c,a);

if not eof(c) then copyrun(c,b);

until eof(c);

close(a);close(b);close(c);

end;

procedure merge;

begin

reset(a);reset(b);rewrite(c);

while (not eof(a))and(not eof(b)) do

begin

mergerun;z:=z+1;

end;

while not eof(a) do begin;copyrun(a,c);z:=z+1;end;

while not eof(b) do begin;copyrun(b,c);z:=z+1;end;

close(a);close(b);close(c);

end;

procedure sort;

begin

repeat

distribute;z:=0;

merge;

until z=1;

erase(b);erase(a);

end;

procedure print;

begin

reset(c);

while not eof(c) do

begin

read(c,stu);

writeln(stu.fio,'--',stu.godr,'--',stu.godo);

end;

writeln('Для продолжения нажмите Enter!');

readln;

end;

begin {main}

assign(c,'c:\data.dat'); {файл с данными}

assign(b,'c:\temp1');

assign(a,'c:\temp2');

clrscr;

writeln('Не отсортированные данные');

print;

writeln('Сортировка данных по фамилии');

writeln('Отсортированные данные');

sort;

print;

end.

Результат выполнения программы:

Неотсортированные данные: Анисимов Пётр Иванович--1982--1999 Синилов Сергей Иванович—1983--2000 Шарапов Евгений Владимирович--1984--2001 Бажин Никита Андреевич--1983--2000 Созинов Алексей Петрович—1984--2001 Малышев Василий Владимирович--1982--1999 Тихонов Сергей Геннадьевич—1982--1999 Еговцев Иван Артурович--1983--2000 Михайлов Артём Егорович—1983--2000 Ползунова Елена Андреевна—1982--1999 Смирнов Никита Владимирович--1984--2001 Мельникова Лариса Анатольевна--1984--2001 Токарева Надежда Александровна--1983--2000 Маслова Нина Михайловна—1984--2001 Молчановский Ильнар Ирекович--1982--1999 Корягина Нина Плахова--1984—2001 Егорова Пелагея Луповна--1983--2000 Гаспер Валентина Александровна--1982--1999 Теплоухов Юрий Леонидович—1982--1999 Кирьянов Антон Алексеевич—1983--2000 Для продолжения нажмите Enter!     Сортировка данных по фамилии Отсортированные данные Анисимов Пётр Иванович--1982--1999 Бажин Никита Андреевич--1983--2000 Гаспер Валентина Александровна--1982--1999 Еговцев Иван Артурович--1983--2000 Егорова Пелагея Луповна--1983--2000 Кирьянов Антон Алексеевич--1983--2000 Корягина Нина Плахова--1984--2001 Малышев Василий Владимирович--1982--1999 Маслова Нина Михайловна--1984--2001 Мельникова Лариса Анатольевна--1984--2001 Михайлов Артём Егорович--1983--2000 Молчановский Ильнар Ирекович--1982--1999 Ползунова Елена Андреевна--1982--1999 Синилов Сергей Иванович--1983--2000 Смирнов Никита Владимирович--1984--2001 Созинов Алексей Петрович--1984--2001 Теплоухов Юрий Леонидович--1982--1999 Тихонов Сергей Геннадьевич--1982--1999 Токарева Надежда Александровна--1983--2000 Шарапов Евгений Владимирович--1984--2001 Для продолжения нажмите Enter!

Варианты заданий.

1. Сортировать файл с данными по оценкам на вступительных экзаменах и средней оценке в атестате, методом многофазного слияния, распечатать файл с данными до сортировки и после: фамилия имя отчество, год рождения, оценки на вступительных экзаменах и атестате.

2. Сортировать файл с данными по году окончания школы, методом сбалансированного слияния, распечатать файл с данными до сортировки и после: фамилия имя отчество, год рождения, год окончания школы и надобность в общежитие.

3. Сортировать файл с данными по году рождения, методом простого слияния, распечатать файл с данными до сортировки и после: фамилия имя отчество, год рождения и оценки в атестате.

4. Сортировать файл с данными по оценкам на вступительных экзаменах, методом естественного слияния, распечатать файл с данными до сортировки и после: фамилия имя отчество, оценки на вступительных экзаменах и надобность в общежитие.

5. Сортировать файл с данными по фамилиям, методом многофазного слияния, распечатать файл с данными до сортировки и после: фамилия имя отчество, год рождения, год окончания школы и надобность в общежитие.





Дата публикования: 2015-02-22; Прочитано: 270 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...