IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[ADA]Algorithme pyramide


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut [ADA]Algorithme pyramide
    Bonjour, je cherche à realiser un programme sous ADA me permmettant de realiser une pyramide comme celle ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       1
                 232
               3 4543
             4567654
           567898765
         67890109876
       7890123210987
     890123454321098
    90123456765432109
    Les "-" sont en fait des espaces.


    j'ai réalisés plusieurs procedure

    D'abord celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PROCEDURE Espace IS 
     
    Nb: Integer;
    I: Integer; 
     
    BEGIN 
     
    Nb:=1;
     
    while I<=Nb
    LOOP Put(' ');
    END LOOP;
    End;
    Puis ces deux autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    PROCEDURE Nombre_Croissant IS 
     
    Nb: Integer;
    I: Integer;
    Chiffre: Integer;
    Nombre: Integer; 
     
    BEGIN 
     
    Nombre:=Nb;
    WHILE Nombre<=(2*Nb)-1
    LOOP Chiffre:=Nombre rem 10;
    Put(Chiffre);
    Nombre:=Nombre+1;
    END LOOP;
    end;
    Puis celle des nombres decroissant:




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    PROCEDURE Nombre_Decroissant IS
     
     
     
    Nb: Integer;
    I: Integer;
    Chiffre: Integer;
    Nombre: Integer;
     
     
     
    BEGIN 
     
    Nombre:=Nb;
    WHILE Nombre<=2*(Nb-1)
    LOOP Chiffre:=Nombre rem 10;
    Put(Chiffre);
    Nombre:=Nombre-1;
    END LOOP;
    end;
    Mais voila je n'arrive pas organiser le programme tout entié si quelq'un pouvais m'aider je lui en serait tres reconnaisant.
    Merci d'avance!

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Le forum ADA, c'est ici :

    http://www.developpez.net/forums/forumdisplay.php?f=227

    Si c'est un problème d'algorithmique, reposte ton programme en pseudo langage algorithmique, parce que l'ADA...

    Edit : Ok, je viens de voir que tu l'as mis dans ce forum

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    En fait voila ce que voudrais realisé
    a)
    Une procedure qui permet d'afficher Nb caractéres ' ' à partir de l'element courant.

    b)Une procedure NOMBRE_CROISSANT qui permet d'afficher à l'ecran sur une meme ligne les chiffres représentant les unites des nombres allant de Nb à (2*Nb)-1

    c) UNe procedure NOMBRE_DECROISSANT qui permet d'afficher a l'ecran sur une meme ligne les chiffres representant les unites des nombres allant de 2*(Nb-1) à Nb

    d) Enfin, à partir de ces procedures faut que jarive a realiser la pyramide

    MErci de m'aider pce la je desespere

  4. #4
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    --------1 !
    -------232 !
    ------3 4543 !
    -----4567654 !
    ----567898765 !
    ----67890109876
    ---7890123210987
    --890123454321098
    -90123456765432109
    0123456789876543210
    remarque : aux lignes marquées de ! il manque certainement un -
    qqchose du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    const S10 : string[9] = '         ';
    var s,s1 : string; i,j : integer;
    for i:=1 to 10 do
       begin
       if s < 10 then
          s:=copy(S10,1,10-i)
       else
          s:='';
       if i=1 then 
          s:=s + '1' 
       else
          begin
          s1:='';
          for j:=i to 2*i-1 do         
             s1 := s1 + char( 48 + j mod 10 );
          s:=s + s1;
          for j:= 2*i-2 downto i do
             s:= s + s1[j];
          end;
       writeln(s);
       end;

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    Merci,mais je suis en apprentisage de programmation et je n'ai programmé que en language ADA alors si vous pouviez me le mettre en Algorithme simple ou en language ADA parce que meme si j'arrive a comprend l'essentil certaine chose m'echape

  6. #6
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    certaine chose m'echape
    quoi donc?

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    Je vais noter en () ce que j ene comprend pas



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    const S10 : string[9] = '         ';  : (ce que cela definit)
     
     
    var s,s1 : string; i,j : integer;  (string cela correspond a quel type ?)
    for i:=1 to 10 do
       begin
       if s < 10 then
          s:=copy(S10,1,10-i)  (c'ets quoi la fonction copy ?)
       else
          s:='';   
       if i=1 then 
          s:=s + '1' 
       else
          begin
          s1:='';
          for j:=i to 2*i-1 do         
             s1 := s1 + char( 48 + j mod 10 );   (char et mod c'est quoi ?)
          s:=s + s1;
          for j:= 2*i-2 downto i do    (down to i do je comprend pas on plus ..)
             s:= s + s1[j];  (le [j] non plus)
          end;
       writeln(s);
       end;
    Merci, en fait le plus simple sa serai d'avoir l'algo. Parce que ce programme est peut etre tres bon mais je le comprend pas . Desolé je debute...

  8. #8
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    En ada j'ai essayer de faire un squelette mais il manque la moitié des choses


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    PROCEDURE Pyramide IS
     
    S : Integer;
    S1: Integer;
    I : Integer;
    J : Integer;
     
    begin
     
    i:= 1;
          FOR I IN 1..10
             LOOP
                begin
          IF S<10 THEN 
             S:=
             ELSE S:=' ';
             IF I=1 THEN 
                S:=S+1;
                ELSE 
                BEGIN
                   S1:=' ';
                   J:=I;
                   FOR J IN I..2*I-1
                         LOOP
                      S1:=S1+(
                         S:=S+S1
                         FOR J:=2*I-2
                         S:=S+S1
                      END;
                      Put(S)
                         end;
    si quelq'un parvien a m'ecrie l'algo ou mele traduire en language Ada sa serai sympa.

  9. #9
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Considérez en '1ère approximation' le string comme un tableau de 255 caractères et un string dimensionné comme string[n] un tableau de n caractères. Les éléments du string sont s[1], s[2], , ... , s[longueur du string]
    attention : cela ne commence pas à 0 comme char c[] en C

    Il y a quelques différences entre pascal, delphi mais passons pour le moment.

    const S10 : string[9] = '---------'; : (ce que cela définit) => un string do 9 caractères initialisé à '---------' soit 9 espaces ( ici j'ai mis - à la plaxe de espace car l'editeur ne semble pas permettre 9 space de suite.

    s:=copy(S10,1,10-i) (c'est quoi la fonction copy ?) on sélectionne dans S10 depuis la position 1 les 10-i caractères qui suivent et on stocke le tout dans s.

    s1 := s1 + char( 48 + j mod 10 ); (char et mod c'est quoi ?)

    char(n) n un byte de 0 à FF est le caractère ascii N° n. mod => modulo soit, en d’autres termes, reste de la division par exemple 9 mod 10 = 9 , 10 mod 10 =0, 11 mod 10 = 1, …

    (down to i do je comprend pas on plus ..)
    dans la boucle au lieu d'aller du chiffre le + petit vers le plus grand avec un incrément de 1 on va du plus grand vers le plus petit avec un décrément de 1

    s1[j]; (le [j] non plus
    caractère N° j de s1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un algorithme en langage ADA
    Par kiimmy dans le forum Ada
    Réponses: 1
    Dernier message: 11/10/2011, 10h00
  2. Algorithme de LZ77 en Ada
    Par miomikio dans le forum Ada
    Réponses: 16
    Dernier message: 19/02/2008, 01h26
  3. Algorithme pyramidal en gestion
    Par ctl1970 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 15/11/2006, 18h44
  4. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo