Mam do wykonania następujące ćwiczenie: program, który pozwoli użytkownikowi zapisać do pliku binarnego zdefiniowanego wybraną liczbę rekordów zawierających imię,nazwisko i wiek osoby, a następnie umożliwi wyszukiwanie tych rekordów po zawartości pola zawierającego nazwisko. Z plikiem binarnym zdefiniowanym sobie poradziłem:
program zad3;
uses crt;
type
typ = record
imie:string;
nazwisko:string;
wiek:byte;
end;
plik = file of typ;
var
p:plik;
t:typ;
s:byte;
n:string;
const
i1:typ=(imie:'Piotr';nazwisko:'Maslak';wiek:16);
i2:typ=(imie:'Damian';nazwisko:'Krawczyk';wiek:87);
i3:typ=(imie:'Daniel';nazwisko:'Kowalski';wiek:25);
i4:typ=(imie:'Waldemar';nazwisko:'Szary';wiek:43);
i5:typ=(imie:'Adam';nazwisko:'Kokoszka';wiek:57);
procedure wypisz(var F:plik);
var
r:typ;
begin
{$I-}reset(f);{$I+}
if IOResult <> 0 then exit;
while not eof(f) do
begin
read(f,r);
write(r.imie,' ',r.nazwisko,' ',r.wiek);
writeln;
end;
close(f);
end;
procedure app(var f:plik);
begin
{$I-}reset(f);{$I+}
if ioresult <> 0 then halt(1);
seek(f,filesize(f));
end;
procedure dopisz(var s:byte;var f:plik);
var
r:typ;
i:byte;
begin
app(f);
if ioresult <> 0 then exit;
for i:=1 to s do
begin
with r do
begin
writeln('Podaj imie');
readln(imie);
writeln('Podaj nazwisko');
readln(nazwisko);
writeln('Podaj wiek');
readln(wiek);
end;
write(f,r);
end;
close(f);
end;
procedure szukaj(n:string; var f:plik);
var
r:typ;
begin
{$I-}reset(f);{$I+}
if IOResult <> 0 then exit;
while not eof(f) do
begin
read(f,r);
if n=r.nazwisko then
begin
write(r.imie,' ',r.nazwisko,' ',r.wiek);
writeln;
end;
end;
close(f);
end;
begin
clrscr;
s:=0;
assign(p,'plik.dat');
{I-}rewrite(p);{I+}
if ioresult<>0 then exit;
write(p,i1);
write(p,i2);
write(p,i3);
write(p,i4);
write(p,i5);
close(p);
wypisz(p);
writeln;
writeln('Ile osob chcesz dopisac?');
readln(s);
if s<>0 then
begin
clrscr;
dopisz(s,p);
end
else
begin
writeln('Wybrales 0, program za 3 sekundy skonczy swoje dzialanie');
delay(3000);
exit;
end;
clrscr;
wypisz(p);
clrscr;
writeln('Szukane nazwisko');
readln(n);
writeln;
szukaj(n,p);
readln;
end.
Ale mam zrobić to samo, tylko używając pliku amorficznego. Nie wiem jak się za to zabrać, tak aby wprowadzać jak najmniej modyfikacji do poprzedniego programu.