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.
A voir également:
- Enregestrement et pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Le protocole assure que la communication entre l'ordinateur de pascal et le serveur de visiodoct est car les informations seront avant d'être envoyées. - Forum Pascal
- Pascal ✓ - Forum Pascal
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...
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...