Цитата:
Сообщение от Irinka15-2008
Да. в меня должны спросить тип сортировки и в зависимости от этого отсортировать по году(убыванию) и студентов по алфавиту
|
Как-то так. Только файл я выкинул - не вижу в нем смысла, заменил массивом.
Код:
uses crt;
type
studlub = record
nomerzach:string[8];
FIO:string[20];
mestorojd:string[20];
godrojd:word;
nomerstud:string[6];
hobbi:string[8];
end;
var
stud:Array[1..100] of studlub;
dummy:studlub;
i,j,N:word;
sort_type:byte;
begin
clrscr;
N:=0;
writeln('Vvodite dannie o studentax');
repeat
Inc(N);
with stud[N] do
begin
write('nomer zachetki: '); readln(nomerzach);
write('FIO: ');readln(Fio);
write('mestorojd: ');readln(mestorojd);
write('Godrojdeniy: ');readln(godrojd);
write('nomer studencheskogo: ');readln(nomerstud);
write('hobbi: ');readln(hobbi);
end;
clrscr;
writeln ('ENTER-prodolghenie vvoda, ESC-zavershenie vvoda');
until (readkey=#27) or (N=100);
clrscr;
writeln('Spisok studentov:');
writeln;
writeln('-----------------------------------------------------------------------');
writeln('| Nzacotki | FIO | Mesto rojd | G.r. | N stud | hobbi |');
writeln('-----------------------------------------------------------------------');
for i:=1 to N do
begin
with stud[i] do
begin
gotoXY(1,whereY);write('| ',nomerzach);
gotoXY(12,whereY);write('| ',Fio);
gotoXY(33,whereY);write('| ',mestorojd);
gotoXY(54,whereY);write('| ',godrojd);
gotoXY(61,whereY);write('| ',nomerstud);
gotoXY(70,whereY);write('| ',hobbi);
gotoXY(79,whereY);write('|');
end;
writeln;
end;
writeln;
writeln('Press "Enter" to continue');
readln;
clrscr;
writeln('Sort by:');
writeln(' 1 - Alphabet');
writeln(' 2 - Year of birth');
readln(sort_type);
clrscr;
if sort_type=1 then
begin
for i:=1 to N do
for j:=1 to N-i do
if Ord(stud[j].FIO[1])>Ord(stud[j+1].FIO[1]) then
begin
dummy:=stud[j];
stud[j]:=stud[j+1];
stud[j+1]:=dummy;
end;
end else
begin
for i:=1 to N do
for j:=1 to N-i do
if stud[j].godrojd<stud[j+1].godrojd then
begin
dummy:=stud[j];
stud[j]:=stud[j+1];
stud[j+1]:=dummy;
end;
end;
writeln('Spisok studentov posle sortirovki:');
writeln;
writeln('-----------------------------------------------------------------------');
writeln('| Nzacotki | FIO | Mesto rojd | G.r. | N stud | hobbi |');
writeln('-----------------------------------------------------------------------');
for i:=1 to N do
begin
with stud[i] do
begin
gotoXY(1,whereY);write('| ',nomerzach);
gotoXY(12,whereY);write('| ',Fio);
gotoXY(33,whereY);write('| ',mestorojd);
gotoXY(54,whereY);write('| ',godrojd);
gotoXY(61,whereY);write('| ',nomerstud);
gotoXY(70,whereY);write('| ',hobbi);
gotoXY(79,whereY);write('|');
end;
writeln;
end;
writeln;
writeln('ENTER - exit programm');
readkey;
end.