Erreur dans l'execution
Page 1 sur 1
Erreur dans l'execution
program application;
uses wincrt;
type
livre = record
aut : string ;
an : integer ;
tit : string ;
dom : string ;
pag : integer ;
end;
livr = file of livre ;
var
f : livr ; l:livre ; n : integer ;
procedure remplir ( var f :livr; l:livre; var n : integer ) ;
var
i: integer ;
begin
repeat
writeln ( ' n = ' ) ;
readln (n) ;
until ( n >= 2 ) and ( n < 50 ) ;
rewrite(f);
for i:= 1 to n do
begin
with l do
begin
writeln ('aut = ' ) ;
readln (aut);
writeln ('an = ') ;
readln (an);
writeln ('tit = ');
readln (tit);
writeln (' dom = ') ;
readln (dom);
writeln ('pag = ');
readln(pag);
end;
write(f,l);
end;
end;
procedure affiche (var f : livr ; l :livre; n :integer ) ;
var
i,a,min:integer;
begin
reset (f) ;
read(f,l);
min:= l.an ;
while not eof do
begin
read(f,l);
a:=l.an;
if min > a then
min := a;
end;
writeln(min);
end;
begin
assign (f,'C:\livres.dat');
remplir (f,l,n) ;
affiche (f,l,n);
end.
uses wincrt;
type
livre = record
aut : string ;
an : integer ;
tit : string ;
dom : string ;
pag : integer ;
end;
livr = file of livre ;
var
f : livr ; l:livre ; n : integer ;
procedure remplir ( var f :livr; l:livre; var n : integer ) ;
var
i: integer ;
begin
repeat
writeln ( ' n = ' ) ;
readln (n) ;
until ( n >= 2 ) and ( n < 50 ) ;
rewrite(f);
for i:= 1 to n do
begin
with l do
begin
writeln ('aut = ' ) ;
readln (aut);
writeln ('an = ') ;
readln (an);
writeln ('tit = ');
readln (tit);
writeln (' dom = ') ;
readln (dom);
writeln ('pag = ');
readln(pag);
end;
write(f,l);
end;
end;
procedure affiche (var f : livr ; l :livre; n :integer ) ;
var
i,a,min:integer;
begin
reset (f) ;
read(f,l);
min:= l.an ;
while not eof do
begin
read(f,l);
a:=l.an;
if min > a then
min := a;
end;
writeln(min);
end;
begin
assign (f,'C:\livres.dat');
remplir (f,l,n) ;
affiche (f,l,n);
end.
Invité- Invité
Re: Erreur dans l'execution
Salem Mondher.
L'erreur est dans la procédure affiche : (while not eof do)
tu dois faire : while not eof (f) do
L'erreur est dans la procédure affiche : (while not eof do)
tu dois faire : while not eof (f) do
Re: Erreur dans l'execution
voici ton programme (avec une petite amélioration) :
procedure remplir ( var f :livr; l:livre; var n : integer ) ;
var
i: integer ;
begin
writeln('REMPLIR');
repeat
writeln ( ' n = ' ) ;
readln (n) ;
until ( n >= 2 ) and ( n < 50 ) ;
rewrite(f);
for i:= 1 to n do
begin
with l do
begin
writeln ('aut = ' ) ;
readln (aut);
writeln ('an = ') ;
readln (an);
writeln ('tit = ');
readln (tit);
writeln (' dom = ') ;
readln (dom);
writeln ('pag = ');
readln(pag);
end;
write(f,l);
end;
close(f);
end;
procedure affiche (var f : livr ) ;
var
min : livre;
a:integer;
begin
writeln('AFFICHE');
reset (f) ;
read(f,l);
min:= l ;
while not eof (f) do
begin
read(f,l);
a:=l.an;
if min.an > l.an then
min := l;
end;
writeln('auteur : ',min.aut,' année : ',min.an, ' *** ');
close(f);
end;
begin
assign (f,'C:\bac2013\livres.dat');
remplir (f,l,n) ;
affiche (f);
end.
procedure remplir ( var f :livr; l:livre; var n : integer ) ;
var
i: integer ;
begin
writeln('REMPLIR');
repeat
writeln ( ' n = ' ) ;
readln (n) ;
until ( n >= 2 ) and ( n < 50 ) ;
rewrite(f);
for i:= 1 to n do
begin
with l do
begin
writeln ('aut = ' ) ;
readln (aut);
writeln ('an = ') ;
readln (an);
writeln ('tit = ');
readln (tit);
writeln (' dom = ') ;
readln (dom);
writeln ('pag = ');
readln(pag);
end;
write(f,l);
end;
close(f);
end;
procedure affiche (var f : livr ) ;
var
min : livre;
a:integer;
begin
writeln('AFFICHE');
reset (f) ;
read(f,l);
min:= l ;
while not eof (f) do
begin
read(f,l);
a:=l.an;
if min.an > l.an then
min := l;
end;
writeln('auteur : ',min.aut,' année : ',min.an, ' *** ');
close(f);
end;
begin
assign (f,'C:\bac2013\livres.dat');
remplir (f,l,n) ;
affiche (f);
end.
Re: Erreur dans l'execution
Salem,
Merci Monsieur .
aussi il faut ke jajoute dmodifications dans la procedure affiche
procedure affiche (var f : livr ; l :livre; n :integer ) ;
var
i,a,min:integer; k:string;
begin
reset (f) ;
read(f,l);
min:= l.an ;
while not eof(f) do
begin
read(f,l);
a:=l.an;
if min > a then
min := a; k:= l.aut;
end;
writeln(k);
end;
Merci Monsieur .
aussi il faut ke jajoute dmodifications dans la procedure affiche
procedure affiche (var f : livr ; l :livre; n :integer ) ;
var
i,a,min:integer; k:string;
begin
reset (f) ;
read(f,l);
min:= l.an ;
while not eof(f) do
begin
read(f,l);
a:=l.an;
if min > a then
min := a; k:= l.aut;
end;
writeln(k);
end;
Invité- Invité
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|