Program pascal qui ne fonctionne pas !! svp
alouizeineb
Messages postés
26
Statut
Membre
-
alouizeineb Messages postés 26 Statut Membre -
alouizeineb Messages postés 26 Statut Membre -
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
- Money manager program - Télécharger - Bourse & Finance
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.