
| |
|
Voila le correction de l'exercice 4 p71, classe: 4Si,
Traduction pascal |
program ex4;
uses wincrt;
type
film=record
titre:string;
re:string;
end;
fich=file of film;
var
f:fich;
e:film;
procedure ajout( var f:fich; var e:film);
var c:char;
begin
with e do repeat
begin
writeln('saisir le titre de film');
readln(titre);
writeln('saisir le nom de realisateur');
readln(re);
end;
seek(f,(filesize(f)));write(f,e);
repeat writeln('voulez vous ajouter un autre film y/n');
readln(c); until c in ['n'..'y'];
until c='n';
end;
procedure modif(var f:fich; var e:film);
var c:char; b,h:string; begin
reset(f);
writeln('pour modifier le titre tapper t pour modifier le realisateur taper r pour modifier les 2 taper d');
readln(c);
case c of
't':begin writeln('saisir l''ancien nom'); readln(b); while not eof(f) do read(f,e);
if b=e.titre then
begin writeln('saisir le nouveau nom'); readln(e.titre); write(f,e); end else writeln('le titre est introuvable'); end;
'r':begin writeln('saisir l''ancien nom de realisateur '); readln(b); while not eof(f) do
read(f,e); if b=e.re then begin writeln('saisir le nouveau nom de realisateur'); readln(e.re);
write(f,e);end else writeln('le nom de realisateur est introuvable'); end;
'd':begin writeln('saisir l''ancien titre de film'); readln(b); while not eof(f) do
read(f,e); if b=e.titre then begin writeln('saisir le nouveau titre');
readln(e.titre); writeln('saisir le nom de realisateur');
readln(e.re); end else writeln('le titre est introuvable') end;
end; close(f);end;
procedure afich(var f:fich; var e:film);
begin
reset(f);
while not eof(f) do
begin
read(f,e);
writeln(e.titre);
writeln(e.re);
end; end;
procedure sup1(var f:fich; var e:film);
var b:string; k,i,n:integer; v:file of film; r:char;
begin
reset(f);
if filesize(f)=0 then writeln('le fichier est vide')
else if filesize(f)=1
then {2}begin repeat begin writeln('le fichier ne contient q''un suel filme, confirmer votre demande de suppression! y/n');
readln(r); end; until r in['n'..'y'];{2}
if r='y' then begin truncate(f); writeln('le filme est supprime avec succe, fichier vide');end;end
else if filesize(f)>1 then
begin
reset(f);
writeln('saisir le titre de film');
readln(b);
while not eof(f) do
begin
read(f,e); if b=e.titre then begin
k:=filepos(f); assign(v,'d:\filme\movie1.dat'); rewrite(v); reset(v);end;end;
reset(f);
for i:=1 to k-1 do
begin
read(f,e);write(v,e);
end;
seek(f,k);
for i:=k to filesize(f)-1 do
begin
read(f,e) ;write(v,e);
end;
seek(f,0); truncate(f); reset(f); reset(v);
while not eof(v) do
begin read(v,e) ;write(f,e); end; end;
end;
procedure cherche( var f:fich; var e:film );
var b:string; o:integer;
begin reset(f);
if filesize(f)=0 then writeln('le fichier est vide') else begin
o:=0;
writeln('saisir le titre de film');
readln(b);end;
while not eof(f) do
begin
read(f,e);
if b=e.titre then
begin writeln('le titre est : ',e.titre,', le realisateur est : ',e.re,', l''emplecement de film dans le fichier est : ',
(filepos(f)));
o:=o+1;
end
end;
if o=0 then writeln('le titre est introuvable');
end;
procedure menuedit;
var c:byte; begin repeat
writeln('1- ajouter film');
writeln('2- modifier film');
writeln('3- chercher film');
writeln('4- suprimer film');
writeln('5- retour au mnu principale');
repeat writeln('saisir votre choix') ;
readln(c);
until c in [1..6];
case c of
1:ajout(f,e);
2:modif(f,e);
3:cherche(f,e);
4:sup1(f,e);
end;
until c=5;
end;
var choix:byte;
begin
assign(f,'d:\filme\movie.dat');
{$i-} reset(f); {$i+};
if ioresult<>0 then rewrite(f);
reset(f);
repeat
clrscr;
gotoxy(30,1);
writeln('-----------------------');
gotoxy(30,2);
writeln('! 1- menu fichier !');
gotoxy(30,3);
writeln('-----------------------');
gotoxy(30,4);
writeln('! 2- menu edition !');
gotoxy(30,5);
writeln('-----------------------');
gotoxy(30,6);
writeln('! 3- menu quitter !');
gotoxy(30,7);
writeln('-----------------------');
repeat
writeln('saisir votre choix '); readln(choix);
until choix in [1..3];
case choix of
1:begin if filesize(f)=0 then writeln('le ficheir est ouvert, vide')
else writeln('le fichier est ouverte elle contient ',filesize(f),' filmes'); readln;end;
2:begin menuedit; end; end;
until choix=3; writeln('merci d''avoir utuliser ce programme de gestion de filme'); close(f);
end. |
|