Program pascal qui ne fonctionne pas !! svp

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 .
Configuration: Windows XP
Firefox 2.0.0.12

4 réponses

  1. alouizeineb Messages postés 26 Statut Membre
     
    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
  2. alouizeineb Messages postés 26 Statut Membre
     
    any help please ????
    0
  3. 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
  4. alouizeineb Messages postés 26 Statut Membre
     
    merci beaucoup
    0