Enregestrement et pascal
Fermé
hajemido
Messages postés
1
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
24 juillet 2008
-
24 juil. 2008 à 10:37
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 24 juil. 2008 à 12:33
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 24 juil. 2008 à 12:33
A voir également:
- Enregestrement et pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Uses crt pascal - Forum Pascal
- Pascal veut modifier une photo mais c’est la visionneuse d’images qui l’ouvre. que doit-il choisir pour l’ouvrir avec son logiciel de traitement d’image ? - Forum Windows
- Dev-pascal - Télécharger - Édition & Programmation
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
24 juil. 2008 à 12:33
24 juil. 2008 à 12:33
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...