Program pascal qui ne fonctionne pas !! svp
alouizeineb
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
alouizeineb Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
alouizeineb Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
bonsoir
voila l'exercice
je suis proche du solution mais il y'a une faute que je ne le trouve pas , svp aider moi
soit un tableau T de n lettres majuscules (de A à Z ) , n étant un entier cmpris entre 5 et 25
on désire trier en ordre croissant les élements de T et les ranger dans un tableau V en utilisant le principe suivant :
1) chercher la plus petite lettre dans T
2)ranger cette lettre dans V
3) répéter n fois les étapes 1 et 2
on desire creer un programme pascal qui permet de saisir les elements du T , trier les elements de T
et d'afficher les element de V .
voila l'exercice
je suis proche du solution mais il y'a une faute que je ne le trouve pas , svp aider moi
soit un tableau T de n lettres majuscules (de A à Z ) , n étant un entier cmpris entre 5 et 25
on désire trier en ordre croissant les élements de T et les ranger dans un tableau V en utilisant le principe suivant :
1) chercher la plus petite lettre dans T
2)ranger cette lettre dans V
3) répéter n fois les étapes 1 et 2
on desire creer un programme pascal qui permet de saisir les elements du T , trier les elements de T
et d'afficher les element de V .
A voir également:
- Program pascal qui ne fonctionne pas !! svp
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Atheros client installation program - Forum Logiciels
- Time of day not set please run setup program ✓ - Forum Debian
4 réponses
voila mon essai
program exercice;
uses wincrt;
type
tab=array[1..25]of char;
var
n:integer;
v,t:tab;
procedure remplir (var n:integer;var t,v:tab);
var
i:integer;
begin
repeat
writeln('donner n ');
readln(n);
until n in [5..25] ;
repeat
for i :=1 to n do
begin
writeln('donner l''elment n',i);
readln (t[i]);
end;
until (t[i] in ['A'..'Z']);
end;
procedure tri (n:integer; t:tab; var v:tab);
var
min:char;
pos,k,i:integer;
begin
for k:=1 to n do
begin
min:=t[k];
pos:=1;
for i:=2 to n do
if t[i] <min then
begin
min:=t[i];
pos:=i;
end;
v[k]:=min ;
t[pos] :='a'
end;
end;
procedure affiche (n:integer;v:tab);
var
k:integer;
begin
for k:=1 to n do
write(t[k] ,' / ');
end;
begin
remplir(n,t,v);
tri(n,t,v);
affiche(n,v);
end.
program exercice;
uses wincrt;
type
tab=array[1..25]of char;
var
n:integer;
v,t:tab;
procedure remplir (var n:integer;var t,v:tab);
var
i:integer;
begin
repeat
writeln('donner n ');
readln(n);
until n in [5..25] ;
repeat
for i :=1 to n do
begin
writeln('donner l''elment n',i);
readln (t[i]);
end;
until (t[i] in ['A'..'Z']);
end;
procedure tri (n:integer; t:tab; var v:tab);
var
min:char;
pos,k,i:integer;
begin
for k:=1 to n do
begin
min:=t[k];
pos:=1;
for i:=2 to n do
if t[i] <min then
begin
min:=t[i];
pos:=i;
end;
v[k]:=min ;
t[pos] :='a'
end;
end;
procedure affiche (n:integer;v:tab);
var
k:integer;
begin
for k:=1 to n do
write(t[k] ,' / ');
end;
begin
remplir(n,t,v);
tri(n,t,v);
affiche(n,v);
end.
Bonjour,
J'ai regardé ton programme
voici ce que j'ai relevé:
Les variables passées aux procédures sont locales, elles n'existent que dans la procédure, donc le taableau que tu passe en paramètre cesse d'exister quand tu sort des procédures. Les tableaux T,V et la variable n sont globales donc connues de tout le programme, pas besoins de les passer aux procédures.
J'ai regardé ton programme
voici ce que j'ai relevé:
Les variables passées aux procédures sont locales, elles n'existent que dans la procédure, donc le taableau que tu passe en paramètre cesse d'exister quand tu sort des procédures. Les tableaux T,V et la variable n sont globales donc connues de tout le programme, pas besoins de les passer aux procédures.
program exercice; uses wincrt; type tab=array[1..25]of char; var n:integer; v,t:tab; procedure remplir;{variables globales communes à tout le programme} var i:integer; begin repeat writeln('donner n '); readln(n); until n in [5..25] ; {ici la boucle for doit englober l la boucle repeat} {la boucle for compte les elements de T} {la boucle repeat verifie les elements avant de passer au suivant} for i :=1 to n do begin repeat writeln('donner l''elment n',i); readln (t[i]); until (t[i] in ['A'..'Z']); end; end; procedure tri; var min:char; pos,k,i:integer; begin for k:=1 to n do begin min:=t[1];{On commence toujours à 1} pos:=1; for i:=1 to n do begin if t[i] < min then begin min:=t[i]; pos:=i; end; end; v[k]:=min; t[pos] :='a'; end; end; procedure affiche; var k:integer; begin for k:=1 to n do write(v[k] ,' / ');{ici il faut afficher V et non pas T} end; begin remplir; tri; affiche; end.