Programmation en pascal

Bonjour
j'ai un petit probleme de programmation en pascal, il me faut programmer le triangle suivant
Trouver la règle de création du triangle suivant
1
11
21
1211
111221
...
Ecrire le programme qui génère un tel triangle.

Merci d'avance pour vos réponse

5 réponses

  1. et voici le resultat :

    a$="1"
    for i=1 to 30
        a$=tri$(a$)
        print using("#####",len(a$));"  ";a$
    next i
    wait
    
    function tri$(a$)
        lon=len(a$)
        cnt=1
        car$=mid$(a$,1,1)
        carb$=mid$(a$,1,1)
        while cnt<=lon
            scan
            while car$=carb$ 
                car$=mid$(a$,cnt+1,1)
                count=count+1
                cnt=cnt+1
            wend
            tri$=tri$+str$(count)+mid$(a$,cnt-1,1)
            count=0
            carb$=car$
        wend
        end function


    moins de 20 lignes en Liberty BASIC pour creer une fonction qui donne le resultat.

    @++

    Liberty BASIC France : http://lbasic.atomysk.com
    Le Forum d'aide : http://lbasic.atomysk.com/forum
    1. en fait j'ai une difficulté à écrire mes boucle dans mon programme que voici
      program triangmeta;
      {$APPTYPE CONSOLE}
      uses
      sysutils;

      const
      minlintab=1;
      maxlintab=100;
      mincoltab=1;
      maxcoltab=100;

      var
      tab:array [mincoltab..maxcoltab,minlintab..maxlintab] of integer;
      A , I , J , L , L1 , P1 , P2 , NBOCCUR , Q: integer ;

      begin

      for I:=minlintab to maxlintab do (*initialisation du tableau*)
      for J:=mincoltab to maxcoltab do
      tab[I,J]:=0 ;

      writeln ('donnez nous un entier 1<x<9'); (*renseignement du triangle meta*)
      readln (A); (*lecture de l entier*)
      tab[1,1]:=A; (*ecriture dans la case 1,1*)
      writeln(tab[1,1]); (*affiche contenu de la case 1,1*)

      (*ecriture du programme*)
      I:=1;
      J:=1;
      while tab [I,J]<>0 do
      begin
      P1:=1;
      P2:=1;
      tab [L+1,P2+1]:=tab[L,P1];
      end;

      NBOCCUR:=1;
      while tab [L,P1]=tab[L,P1+1] do
      begin
      NBOCCUR:=NBOCCUR+1;
      P1:=P1+1;
      tab[L+1,P2]
      writeln(tab[L+1,P2]);
      end;

      tab [L+1,P2]:= NBOCCUR;
      P2:=P2+2;

      end.

      Merci de votre participation
      1. Salut,
        je n'ai pas compris ce triangle encore mais pour votre Pg il yy a des erreures:
        1- chose pas évidante mais!, il faut vérifier que l'utilisateur a entrer une val >1 et <9 sinon à vous de voir.
        2- dans la boucle while tab[i,j]<>0 do
        a) vous avez oubliez l'incrémentation de I et de J car si vpous le laisser comme ça vous entrez dans une boucle infinie puisque
        tab[1,1]<>0.
        b) vous avez mis tab[L+1,.., sachant que l n'a aucune valeur. et si pascal lui donne la val 0 tab[0,.. n'existe pas .
        si vous vpoudriez que je vous aide écrit moi comment construire le triangle meta j'ai bon chercher sur gogle mais nada.
        J'attend des infos.
        Bonne chance.
        Merci.
    2. Salut,
      avec tous le respect que je vous dois, je n'ais pas réussi à comprendre la logique de votre triangle peut être que vous avez mal écrit le triangle,Non?
      si vous avez du nouveau je peut vous aider.
      Bonne chance.
      Merci
      1. Contributeur
        Slt,

        C'est un classique....
        1
        11 sur la ligne du dessus il y a un "1" (=11)
        21 sur la ligne du dessus il y a deux "1" (=21)
        1211 sur la ligne du dessus il y a un "2" (=12) et un "1" (=11)

        ton pb se résume à compter les paquets de chiffres dans ta suite...

        Good luck