Algorithme réecriture simplifiée (ch car)

bonjour à tous,

j'ai un soucis avec un exercice d'algorithme :

en fait c'est la manipulation des chaînes de caractères qui me pose problème voilà l'exercice :

soit des lettres A B C D etc... qu'on appelera alphabet

et des règles exemple : règle 1 => A est réécrit DC
règle 2 => B est réécrit C
règle 3 => C est réécrit D
règle 4 => D est réécrit E
ETC .....

maintenant il faut créer un logiciel qui selon un nombre donné de successions d'étapes étapes 0, puis 1 etc... réécrit correctement selon les règles !

dans l'exemple : étape 0 => A
étape 1 devient D et C
étape 2 devient E et D

ETC ....

j'ai beacuoup de mal avec lamanipulation des caractères vous pourriez m'aider?

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,
    Tu as un gros problème à gérer, c'est que si tu as par exemple

    ADCBC

    Tu transformes selon la règle 1:
    DCDCBC

    puis selon la règle 2

    DCDCCC

    puis la règle 3

    DDDDDD

    puis la 4

    EEEEEE

    comment veux tu revenir à ta chaîne originale 8-)

    J'ai du louper un truc au niveau de la comprenette je crois que ça serait bien que tu clarifies :o)

    Qui va en mer pour son plaisir,
    irait en enfer pour ses vacances
    1. il ne faut pas revenir à la chaine originale, c'est une suite de réécriture :

      je pourrais t'envoyer par mail l'exercice? tu comprendras mieux
      1. Contributeur
        Ben mets le ici :o)

        Qui va en mer pour son plaisir,
        irait en enfer pour ses vacances
        1. c'est un tableau et j' ai scanné l'exercice mais je n'arrive pas à le mettre en réponse
          1. Contributeur
            Ha :-S
            Tu peux le mettre en utilisant cjoint mais je n'arrive pas à le lire d'ici :-S

            Qui va en mer pour son plaisir,
            irait en enfer pour ses vacances
            1. bon voila l'exo :

              axiome : A B C D etc

              règle 1 : A -> DB
              règle 2 : B -> C
              règle 3 : C -> D
              règle 4 : D -> E
              règle 5 : E -> A

              PUIS CE SYSTEME PRODUIT la séquence suivante :
              etape 0 : A
              etape 1 : D B (car A => DB)
              etape 2 : E C
              etape 3 : A D
              etape 4 : D B E (car A => DB et D => E)
              etape 5 : E C A
              etape 6 : A D D B
              etape 7 : D B E E C

              etc .. ...

              donc il faut écrire un algorithmique simplifié

              l'axiome est une chaine de caractère
              règles composées de deux chaines de caractères
              l'ensemble des regles est ordonné et ces regles sont appliquées dans l'ordre initial

              voilà l'exo merci de m'aider je l'a i compris mais la manipulation des chaines de caractères dans des tableaux m'est difficile
              1. Contributeur
                Tu es sûr de ne pas avoir CE à l'étape 1? Si tu appliques les règles dans l'ordre c'est ce que tu devrais avoir...
                Pour la manipulation des tableaux, ça dépend du langage, pas de l'algorithme, donc je ne sais pas si il y a des conventions implicites avec ton prof, sinon de maniere générale, tu prends tous les éléments du tableau un après l'autre et tu applique les règles

                pour i=0 à longueur tableau
                      temp=appliqueRègles(tab[i])
                      si longueur(temp)=1 alors 
                              tab[i]=temp
                      sinon
                               tab[i]=gauche(temp)
                                pour j=longueur tableau à j+1 décroissant
                                         tab[j+1]=tab[j];
                                suivant
                       is
                suivant
                

                Qui va en mer pour son plaisir,
                irait en enfer pour ses vacances
                1. c'est sur > c'est la combinaison DB qui est associée à A

                  cela s'appelle un L-SYSTEME ensemble de règles et de symboles qui modelisent un processus de croissance d'êtres vivants plantes et cellules.

                  sinon, longueur de tableaux c'est une fonction ou procédure?

                  c'est à dire T [1..N]

                  j'aimerais un algo avec variables déclarés, tableaux

                  début
                  si etc
                  tant que etc
                  pour etc ...

                  je commence en algo et je bute sur cet exercice car les caractères c'est pas mon fort ....

                  en tout cas merci de ton aide ...
                  1. utilise un buffer annexe, ca resoudra tes probleme
                    si tu as un truc du genre
                    A=>B
                    tu met a la prochaine case du buffer un B
                    si tu as un A => BC
                    tu met un B puis un C
                2. Contributeur
                  A priori longueur est plutôt destinée à être une fonction, mais c'est ton programme, c'est toi qui voit...
                  Pour l'algo, je t'ai déjà bien mâché le travail, il faut que tu mettes les fioritures, mais le prof essaye de t'apprendre à toi, moi j'ai pas besoin de faire des exos comme ça, alors donner un coup de pattes pour mettre sur le bon chemin oui, mais pas faire tes études à ta place :o)

                  Qui va en mer pour son plaisir,
                  irait en enfer pour ses vacances
                  1. ne te fache pas, j'ai 49 ans, je prépare un concours interne dans mon enterprise la dde; et j'aimerais m'appuyer sur une bonne réponse.

                    je n'ai pas de prof juste quelques exos pris par ci par là c'est de l'autodidactie..

                    désolé
                  2. Contributeur
                    Je me fâche pas, je recadre ;o)
                    Essaye de le faire, voire de le programmer en pascal par exemple (ou en Python), comme ça tu auras une idée pour savoir si c'est correct ou non...

                    Qui va en mer pour son plaisir,
                    irait en enfer pour ses vacances
                  3. @teeboje vais demander à un ami
                    @+