какие тут админы добрые... ладно, вот по теме теже самое...
Задача!
Тема:
Работа с внешними файлами
Условие:
Создать файл, содержащий сведения о студентах вашей группы (ФИО, дата рождения):
а) Выбрать самого младшего студента.
б) Выбрать самого старшего.
в) упорядочить по возрасту.
Вот мой ответ:
НЕ МОГУ ДОЕХАТЬ КАК ПУНКТ 3 СДЕЛАТЬ
program Z1;
type
info=record
fam,im,ot:string[15];
dr,mr,gr:integer;
end;
Spisok=file of info;
var
inf:info;
spi:spisok;
i,msd,msm,msg,ssd,ssm,ssg,k:integer;
begin
writeln('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® бв㤥⮢:');
readln(k);
assign(spi,'g:\stud.dat');
rewrite(spi);
for i:=1 to k do
begin
with inf do
begin
writeln('Ќ®¬Ґа бв㤥в : ',i,' ”®а¬ в § ЇЁбЁ: ” ¬Ё«Ёп, ?¬п, ЋвзҐбвў®, „Ґм! ЊҐбпж! ѓ®¤! ஦¤ҐЁп');
readln(fam);
readln(im);
readln(ot);
readln(dr);
readln(mr);
readln(gr);
end;
write(spi,inf);
end;
close(spi);
reset(spi);
{‘ ¬л© ¬« ¤иЁ©}
ssd:=0;
ssm:=0;
ssg:=0;
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr>ssg) then
begin
ssg:=inf.gr;
ssm:=inf.mr;
ssd:=inf.dr;
end;
if (inf.gr=ssg) then
begin
if (inf.mr>ssm) then
begin
ssg:=inf.gr;
ssm:=inf.mr;
ssd:=inf.dr;
end;
if (inf.mr=ssm) then
begin
if (inf.dr>ssd) then
begin
ssg:=inf.gr;
ssm:=inf.mr;
ssd:=inf.dr;
end;
end;
end;
end;
close(spi);
reset(spi);
{‘ ¬л© бв аиЁ©}
msd:=ssd;
msm:=ssm;
msg:=ssg;
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr<msg) then
begin
msg:=inf.gr;
msm:=inf.mr;
msd:=inf.dr;
end;
if (inf.gr=msg) then
begin
if (inf.mr<msm) then
begin
msg:=inf.gr;
msm:=inf.mr;
msd:=inf.dr;
end;
if (inf.mr=msm) then
begin
if (inf.dr<msd) then
begin
msg:=inf.gr;
msm:=inf.mr;
msd:=inf.dr;
writeln('=! ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
end;
end;
end;
close(spi);
reset(spi);
{Џ®бв஥ЁҐ бЇЁбЄ }
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr<ssg) then
begin
writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
if (inf.gr=ssg) then
begin
if (inf.mr<ssm) then
begin
writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
if (inf.mr=ssm) then
begin
if (inf.dr<ssd) then
begin
writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
end;
end;
end;
close(spi);
reset(spi);
{+1}
for i:=1 to k do
begin
read(spi,inf);
if (ssd=inf.dr) and (ssm=inf.mr) and (ssg=inf.gr) then writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
close(spi);
reset(spi);
{‘ЇЁб®Є Ё +1 ўлў®¤Ёв в®«мЄ® ўҐбм ўўҐ¤сл© бЇЁб®Є... ЉЂЉ ”ЏЋђџ„Ћ—?’њ ЏЋ ‚Ћ‡ђЂ‘’”???}
{‚лў®¤ १г«мв в }
for i:=1 to k do
begin
read(spi,inf);
if (ssd=inf.dr) and (ssm=inf.mr) and (ssg=inf.gr) then writeln('Њ« ¤иЁ© бв㤥в= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
if (msd=inf.dr) and (msm=inf.mr) and (msg=inf.gr) then writeln('‘в аиЁ© бв㤥в= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
close(spi);
readln;
end.
For i := 1 To FileSize(f) Do
For j := FileSize(f) DownTo i+1 Do Begin
Seek(f, j - 1); Read(f, Xj);
Seek(f, j - 2); Read(f, Xpred_j);
If Xpred_j > Xj Then Begin
Seek(f, j - 2); Write(Xj); { <--- на позицию pred_j пишем то, что было в j }
Seek(f, j - 1); Write(Xpred_j); { <--- и наоборот... Результат - поменяли местами записи }
End
End;
Хм.. после 2.5х бессонных ночей вот что навоял!
9я! Работает!!!
Вот код:
Program Lab_9_v1;
uses
Crt;
const
fSpi='c:\Stud.dat';
fSort='c:\StudSort.dat';
kMax=100;
lVozrDate=True; {‘®авЁа®ўЄ True-Ї® ў®§а бв Ёо ¤ вл,False-Ї® гЎлў Ёо}
type
ukinfo=^info;
info=record
fam,im,ot:string[15];
ddmmgggg:string[10];
uk:ukinfo;
end;
Spisok=file of info;
var
inf:info;
spi,sort:spisok;
i,k,iMlad,iStar,j:integer;
ggggmmddMin,ggggmmddMax,ggggmmddSt:longint;
obrabotano:array[1..kMax] of byte;
{Ќ ўе®¤Ґ бЁ¬ў®«м п ¤¤.¬¬.ЈЈЈЈ, ўл室Ґ зЁб«®ў п ЈЈЈЈ¬¬¬¤¤}
function Date(dd_mm_gggg:string):longint;
var
code:integer;
den,mes,god:longint;
begin
Val(Copy(dd_mm_gggg,1,2),den,code);
Val(Copy(dd_mm_gggg,4,2),mes,code);
Val(Copy(dd_mm_gggg,7,4),god,code);
Date:=god*10000+mes*100+den;
end;
BEGIN
ClrScr;
write('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® бв㤥⮢ (Є®«-ў® § ЇЁбҐ©):'); readln(k);
Assign(spi,fSpi);
Rewrite(spi);
for i:=1 to k do
begin
with inf do
begin
writeln('‘в㤥в (§ ЇЁбм) ®¬Ґа: ',i);
write(' ” ¬Ё«Ёп:'); readln(fam);
write(' €¬п:'); readln(im);
write(' ЋвзҐбвў®:'); readln(ot);
write(' „ в ஦¤ҐЁп ў д®а¬ ⥠¤¤.¬¬.ЈЈЈЈ (¤¤-¤Ґм, ¬¬-¬Ґбпж, ЈЈЈЈ-Ј®¤):'); readln(ddmmgggg);
uk:=NIL;
end;
obrabotano[i]:=0;
Write(spi,inf);
end;
Close(spi);
{‘ ¬л© ¬« ¤иЁ©}
iMlad:=1;
ggggmmddMax:=-1;
{‘ ¬л© бв аиЁ©}
iStar:=1;
ggggmmddMin:=30001231; {31.12.3000}
Reset(spi);
for i:=1 to k do
begin
Read(spi,inf);
ggggmmddSt:=Date(inf.ddmmgggg);
if ggggmmddSt>ggggmmddMax then
begin
ggggmmddMax:=ggggmmddSt;
iMlad:=i;
end;
if ggggmmddSt<ggggmmddMin then
begin
ggggmmddMin:=ggggmmddSt;
iStar:=i;
end;
end;
Close(spi);
{‚лў®¤ ¬« ¤иҐЈ® Ё бв а襣®}
writeln;
writeln('‚ д ©«Ґ ',fSpi,':');
Reset(spi);
for i:=1 to k do
begin
Read(spi,inf);
if i=iMlad then
writeln('Њ« ¤иЁ© N ',i,': ',inf.fam,' ',inf.im,' ',inf.ot,' ',inf.ddmmgggg);
if i=iStar then
writeln('‘в аиЁ© N ',i,': ',inf.fam,' ',inf.im,' ',inf.ot,' ',inf.ddmmgggg);
end;
Close(spi);
{lVozrDate=True - ‘®авЁа㥬 Ї® ў®§а бв Ёо ¤ вл ஦¤ҐЁп, в.Ґ. Ї® гЎлў Ёо ў®§а бв }
{lVozrDate=False - ‘®авЁа㥬 Ї® гЎлў Ёо ¤ вл ஦¤ҐЁп, в.Ґ. Ї® ў®§а бв Ёо ў®§а бв }
{€бЇ®«м§гҐ¬ ¬ ббЁў obrabotano: н«-в=1-§ ЇЁбм 㦥 ®Ўа Ў®в , ў Їа®вЁў®¬ б«гз Ґ =0}
Assign(sort,fSort);
Rewrite(sort);
for i:=1 to k do
begin
if lVozrDate=True then
ggggmmddMin:=30001231 {31.12.3000 ¤ в ஦¤ҐЁп б ¬®Ј® бв а襣®}
else
ggggmmddMax:=-1;
Reset(spi);
for j:=1 to k do
begin
Read(spi,inf);
ggggmmddSt:=Date(inf.ddmmgggg);
if (obrabotano[j]=0) and
( ((lVozrDate=True) and (ggggmmddSt<=ggggmmddMin)) or
((lVozrDate=False) and (ggggmmddSt>=ggggmmddMax)) ) then
begin
ggggmmddMin:=ggggmmddSt;
ggggmmddMax:=ggggmmddSt;
iStar:=j;
end;
end;
Close(spi);
Reset(spi);
for j:=1 to k do
begin
Read(spi,inf);
if j=iStar then
begin
obrabotano[j]:=1;
Write(sort,inf);
end;
end;
Close(spi);
end;
Close(sort);
writeln;
if lVozrDate=True then
writeln('‘®авЁа®ўЄ Ї® гЎлў Ёо ў®§а бв (д ©« ',fSort,'):')
else
writeln('‘®авЁа®ўЄ Ї® ў®§а бв Ёо ў®§а бв (д ©« ',fSort,'):');
Reset(sort);
for i:=1 to k do
begin
Read(sort,inf);
writeln(inf.fam,' ',inf.im,' ',inf.ot,' ',inf.ddmmgggg);
end;
Close(sort);
readln;
END.
Program Lab_10_v1;
uses
Crt;
const
fSpi='c:\Stud.dat';
type
ukinfo=^info;
info=record
fam,im,ot:string[15];
ddmmgggg:string[10];
uk:ukinfo;
end;
Spisok=file of info;
var
inf:info;
spi:spisok;
un,p,q,qq1,qq3,e:ukinfo;
i,k,j:integer;
famj,famk:string[15];
worked:boolean;
{ўлў®¤ ¤Ё.ЇҐаҐ¬Ґле}
procedure Vyvod (msg:string);
begin
ClrScr;
writeln(msg);
p:=un;
while p<>NIL do
begin
writeln(p^.fam,' ',p^.im,' ',p^.ot,' ',p^.ddmmgggg);
p:=p^.uk;
end;
readln;
end;
{г¤ «ҐЁҐ ЇҐаў®Ј® н«-в }
procedure DelFirst;
begin
p:=un;
un:=un^.uk;
Dispose(p);
end;
{Ї®ЁбЄ Ї®б«Ґ¤ҐЈ® н«-в ў бЇЁбЄҐ Ё ҐЈ® г¤ «ҐЁҐ}
procedure DelLast;
begin
p:=un;
while p^.uk<>NIL do
begin
q:=p;
p:=p^.uk;
end;
q^.uk:=NIL;
Dispose(p);
end;
{г¤ «ҐЁҐ н«-в ў бЇЁбЄҐ Ї® ҐЈ® ®¬Ґаг}
procedure DelOther(nomer:integer);
var
pred:integer;
begin
p:=un;
pred:=1;
while (pred<=nomer-2) and (p<>NIL) do
begin
Inc(pred);
p:=p^.uk;
end;
q:=p^.uk;
p^.uk:=q^.uk;
Dispose(q);
end;
BEGIN
ClrScr;
New(un);
p:=un;
Assign(spi,fSpi);
Reset(spi);
k:=0;
writeln('‘®¤Ґа¦Ё¬®Ґ д ©« '+fSpi+':');
while not Eof(spi) do
begin
Inc(k);
Read(spi,inf);
writeln(inf.fam,' ',inf.im,' ',inf.ot,' ',inf.ddmmgggg);
if k=1 then
begin
p^.fam:=inf.fam;
p^.im:=inf.im;
p^.ot:=inf.ot;
p^.ddmmgggg:=inf.ddmmgggg;
p^.uk:=NIL;
end
else
begin
New(q);
q^.fam:=inf.fam;
q^.im:=inf.im;
q^.ot:=inf.ot;
q^.ddmmgggg:=inf.ddmmgggg;
q^.uk:=NIL;
p^.uk:=q;
p:=q;
end;
end;
Close(spi);
readln;
Vyvod('„ лҐ ¤Ё ¬ЁзҐбЄ®Ј® бЇЁбЄ :');
{¤®Ї®«ҐЁҐ бЇЁбЄ ў з «Ґ}
New(q);
q^.fam:='000';
q^.im:='00';
q^.ot:='0';
q^.ddmmgggg:='01.01.2000';
q^.uk:=un;
un:=q;
Vyvod('„ лҐ ¤Ё ¬ЁзҐбЄ®Ј® бЇЁбЄ (Ї®б«Ґ ¤®Ў ў«ҐЁп ў з «® бЇЁбЄ ):');
{Ї®ЁбЄ Ї®б«Ґ¤ҐЈ® н«-в ў бЇЁбЄҐ}
p:=un;
while p^.uk<>NIL do
p:=p^.uk;
{¤®Ї®«ҐЁҐ бЇЁбЄ ў Є®жҐ}
New(q);
q^.fam:='666';
q^.im:='66';
q^.ot:='6';
q^.ddmmgggg:='01.01.1940';
q^.uk:=p^.uk;
p^.uk:=q;
Vyvod('„ лҐ ¤Ё ¬ЁзҐбЄ®Ј® бЇЁбЄ (Ї®б«Ґ ¤®Ў ў«ҐЁп ў Є®Ґж бЇЁбЄ ):');
{г¤ «ҐЁҐ ЇҐаў®Ј® н«-в }
DelFirst;
Vyvod('„ лҐ ¤Ё ¬ЁзҐбЄ®Ј® бЇЁбЄ (Ї®б«Ґ г¤ «ҐЁп ЇҐаў®Ј® н«-в бЇЁбЄ ):');
{Ї®ЁбЄ Ї®б«Ґ¤ҐЈ® н«-в ў бЇЁбЄҐ Ё ҐЈ® г¤ «ҐЁҐ}
DelLast;
Vyvod('„ лҐ ¤Ё ¬ЁзҐбЄ®Ј® бЇЁбЄ (Ї®б«Ґ г¤ «ҐЁп Ї®б«Ґ¤ҐЈ® н«-в бЇЁбЄ ):');
ClrScr;
writeln('„«п ®Ў¬Ґ н«Ґ¬Ґв®ў ўўҐ¤ЁвҐ Ёе ®¬Ґа :');
write('ЏҐаўл© н«Ґ¬Ґв:'); readln(j);
write('‚в®а®© н«Ґ¬Ґв:'); readln(k);
i:=1;
p:=un;
while (i<=j) and (p<>NIL) do
begin
qq1:=p;
p:=p^.uk;
Inc(i);
end;
i:=1;
p:=un;
while (i<=k) and (p<>NIL) do
begin
qq3:=p;
p:=p^.uk;
Inc(i);
end;
{®Ў¬Ґ}
e^.fam:=qq1^.fam;
e^.im:=qq1^.im;
e^.ot:=qq1^.ot;
e^.ddmmgggg:=qq1^.ddmmgggg;
qq1^.fam:=qq3^.fam;
qq1^.im:=qq3^.im;
qq1^.ot:=qq3^.ot;
qq1^.ddmmgggg:=qq3^.ddmmgggg;
qq3^.fam:=e^.fam;
qq3^.im:=e^.im;
qq3^.ot:=e^.ot;
qq3^.ddmmgggg:=e^.ddmmgggg;
Vyvod('‘ЇЁб®Є (Ї®б«Ґ ®Ў¬Ґ н«-в®ў Ї® Ёе ®¬Ґа ¬):');
ClrScr;
writeln('„«п ®Ў¬Ґ н«Ґ¬Ґв®ў ўўҐ¤ЁвҐ Є«озЁ (д ¬Ё«Ёо):');
write('ЏҐаў п д ¬Ё«Ёп:'); readln(famj);
write('‚в®а п д ¬Ё«Ёп:'); readln(famk);
worked:=true;
p:=un;
while (worked) and (p<>NIL) do
begin
qq1:=p;
if Pos(famj,p^.fam)>0 then
worked:=false;
p:=p^.uk;
end;
worked:=true;
p:=un;
while (worked) and (p<>NIL) do
begin
qq3:=p;
if Pos(famk,p^.fam)>0 then
worked:=false;
p:=p^.uk;
end;
{®Ў¬Ґ}
e^.fam:=qq1^.fam;
e^.im:=qq1^.im;
e^.ot:=qq1^.ot;
e^.ddmmgggg:=qq1^.ddmmgggg;
qq1^.fam:=qq3^.fam;
qq1^.im:=qq3^.im;
qq1^.ot:=qq3^.ot;
qq1^.ddmmgggg:=qq3^.ddmmgggg;
qq3^.fam:=e^.fam;
qq3^.im:=e^.im;
qq3^.ot:=e^.ot;
qq3^.ddmmgggg:=e^.ddmmgggg;
Vyvod('‘ЇЁб®Є (Ї®б«Ґ ®Ў¬Ґ н«-в®ў Ї® Ёе Є«оз ¬):');
ClrScr;
write('„«п г¤ «ҐЁп н«Ґ¬Ґв ўўҐ¤ЁвҐ ҐЈ® ®¬Ґа:'); readln(j);
k:=0;
p:=un;
while p<>NIL do
begin
p:=p^.uk;
Inc(k);
end;
if j=1 then
DelFirst
else
if j=k then
DelLast
else
DelOther(j);
Vyvod('‘ЇЁб®Є Ї®б«Ґ г¤ «ҐЁп н«-в Ї® ҐЈ® ®¬Ґаг:');
ClrScr;
write('„«п г¤ «ҐЁп н«Ґ¬Ґв ўўҐ¤ЁвҐ ҐЈ® Є«оз (д ¬Ё«Ёо):'); readln(famj);
worked:=true;
{Ї® д ¬Ё«ЁЁ ®ЇаҐ¤Ґ«пҐ¬ ®¬Ґа н«-в }
j:=0;
p:=un;
while (worked) and (p<>NIL) do
begin
Inc(j);
if Pos(famj,p^.fam)>0 then
worked:=false;
p:=p^.uk;
end;
if j=1 then
DelFirst
else
if j=k then
DelLast
else
DelOther(j);
Vyvod('‘ЇЁб®Є Ї®б«Ґ г¤ «ҐЁп н«-в Ї® ҐЈ® Є«озг:');
{гЁз⮦ҐЁҐ ¤Ё.ЇҐаҐ¬Ґле}
p:=un;
while p<>NIL do
begin
p:=p^.uk;
Dispose(un);
un:=p;
end;
END.