Enregestrement et pascal
hajemido
Messages postés
1
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
salut je veut chercher l'exucution d'exercice pascal d'enregestrement :
program ex ;
uses wincrt ;
type livre =record
nom_livre,nom_auteur :string;
isbn:integer;
end;
tab =array [1..50] of livre;
var
t:tab;
n:integer;
procedure saisie (var n:integer; var t:tab );
var
i:integer;
begin
repeat
writeln('enter le nombre de case');
readln(n);
until n in [2..26];
for i:= 1 to n do
begin
with t[i]do
begin
writeln('nom de livre');
readln(nom_livre);
writeln('nom d auteur');
readln(nom_auteur);
writeln ('enter le isbn');
readln(isbn);
end;
end;
end;
procedure permut(var x,y:livre);
var
z:livre;
begin
z:=x;
x:=y;
y:=x;
end;
procedure maximum (i:integer;t:tab ;var indice :integer);
var
j,max:integer;
begin
indice :=i;
max:=t[i].isbn;
for j :=i+1 to n do
begin
indice:=j;
max:=t[j].isbn;
end;
end;
procedure tri(n:integer;var t:tab);
var
i,max,indice:integer;
begin
for i:=1 to n-1 do
begin
maximum (i,t,indice);
if t[indice].isbn>t[i].isbn then
permut(t[i],t[indice]);
end;
end;
procedure affiche (n:integer;t:tab);
var
i:integer;
begin
for i:= 1 to n do
with t[i]do
begin
write(nom_livre);
write(nom_auteur);
write(isbn);
end ;
end;
{programme principale}
begin
saisie (n,t);
tri(n,t);
affiche(n,t);
end.
salut je veut chercher l'exucution d'exercice pascal d'enregestrement :
program ex ;
uses wincrt ;
type livre =record
nom_livre,nom_auteur :string;
isbn:integer;
end;
tab =array [1..50] of livre;
var
t:tab;
n:integer;
procedure saisie (var n:integer; var t:tab );
var
i:integer;
begin
repeat
writeln('enter le nombre de case');
readln(n);
until n in [2..26];
for i:= 1 to n do
begin
with t[i]do
begin
writeln('nom de livre');
readln(nom_livre);
writeln('nom d auteur');
readln(nom_auteur);
writeln ('enter le isbn');
readln(isbn);
end;
end;
end;
procedure permut(var x,y:livre);
var
z:livre;
begin
z:=x;
x:=y;
y:=x;
end;
procedure maximum (i:integer;t:tab ;var indice :integer);
var
j,max:integer;
begin
indice :=i;
max:=t[i].isbn;
for j :=i+1 to n do
begin
indice:=j;
max:=t[j].isbn;
end;
end;
procedure tri(n:integer;var t:tab);
var
i,max,indice:integer;
begin
for i:=1 to n-1 do
begin
maximum (i,t,indice);
if t[indice].isbn>t[i].isbn then
permut(t[i],t[indice]);
end;
end;
procedure affiche (n:integer;t:tab);
var
i:integer;
begin
for i:= 1 to n do
with t[i]do
begin
write(nom_livre);
write(nom_auteur);
write(isbn);
end ;
end;
{programme principale}
begin
saisie (n,t);
tri(n,t);
affiche(n,t);
end.
Configuration: Windows XP Internet Explorer 6.0
1 réponse
-
Bonjour,
Grosse erreur sur la procedure Permut, qui prend (x,y) et renvoie (y,y) au lieu de (y,x) !
Grosse erreur sur la procedure maximum, qui calcule toujours indice=n !
Sinon quelques défauts ici ou là...
Remarques :
L'unité wincrt est inutile ici !
Il est inutile de déclarer t et n en variables globales puisque tu les passes à chaque fois en paramètres !
Pourquoi mettre n entre 2 et 26 et en même temps configurer tab pour aller jusqu'à 50 ?
De la façon dont est fait le tri, l'ordre est décroissant (voir ma note dans affiche)
Je me suis permis quelques amélioration de présentation...program ex; type livre=record nom_livre,nom_auteur :string; isbn:integer; end; tab=array[1..50] of livre; procedure saisie(var n:integer;var t:tab); var i:integer; begin repeat write('Entrer le nombre de cases : '); readln(n); writeln; until n in [2..26]; for i:=1 to n do begin with t[i] do begin write('Nom du livre....... '); readln(nom_livre); write('Nom de l''auteur.... '); readln(nom_auteur); write('Code ISBN.......... '); readln(isbn); writeln; end; end; end; procedure permut(var x,y:livre); var z:livre; begin z:=x; x:=y; y:=z; end; procedure maximum(i,n:integer;t:tab;var indice:integer); var j,max:integer; begin indice:=i; max:=t[i].isbn; for j:=i+1 to n do if t[j].isbn>max then begin indice:=j; max:=t[j].isbn; end; end; procedure tri(n:integer;var t:tab); var i,indice:integer; begin for i:=1 to n-1 do begin maximum(i,n,t,indice); if t[indice].isbn>t[i].isbn then permut(t[i],t[indice]); end; end; procedure affiche(n:integer;t:tab); var i:integer; begin for i:=1 to n do // affiche dans l'ordre décroissant {for i:=n downto 1 do} // affiche dans l'ordre croissant with t[i]do writeln(isbn,' ',nom_livre,' (',nom_auteur,')'); end; {programme principal} var n:integer; t:tab; begin saisie (n,t); tri(n,t); affiche(n,t); writeln; write('Fin du programme. Appuyer sur Entree'); readln; end.Bonne continuation...