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   -
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 .
A voir également:

4 réponses

alouizeineb Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
alouizeineb Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
any help please ????
0
amigo
 
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.


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.
0
alouizeineb Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup
0