Enregestrement et pascal
hajemido
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
- Puissance en pascal ✓ - Forum Pascal
- 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
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...