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

Pascal Discussion :

Suite de Robinson


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut Suite de Robinson
    Je suis intéressé bien de cet exercice SVP Aide-moi!!!


    La suite de Robinson défini par :
    Ui = a
    Ui+1 = apparition de chaque chiffre dans apparait dans UI
    Exemple :
    Si U0 = 1 et n=6 alors

    U1 = 11 car "1 se répète 1 fois dans U0"
    U2 = 21 car "1 se répète 2 fois dans U1"
    U3 = 1211 car "2 se répète 1 fois et 1 se répète 1 fois dans U2"
    U4 = 3112 car "1 se répète 3 fois et 2 se répète 1 fois dans U3"
    U5 =132112 car"3 se répète 1 fois et 1 se répète 2 et 2 se répète 1 fois dans U4 ".
    U6 = 311322

    Question :
    1. Quel est l'ordre de récurence de cette suite?
    2.Ecrire un analyse et un algorithme qui permet de calculer et d'afficher un terme d'indice (n) de cette suite.

    Jetli.:: cet exercice est un ex de mon devoire de controle !!!!

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Cet exercice me rappelle un enigme comme quoi il faut completer la suite .

    Bon revenons à cet exercice donc. et comme tu le sais forcement ce n'est pas parce que ça fait parti de ton devoir de controle(que tu as peut etre deja fait ou peut etre pas ) qu'on va te filer une correction toute faite.
    Alors proposes et ensuite on vera si tout le monde est d'accord
    Cordialement.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    Bonjour, ce qui est plus intéressant que l'algorithme, c'est l'idée, alors voilà mon idée pour cet exercice :
    • 1- On va lire (a) le premier terme, c'est l'initiation de notre suite.
      {La lecture du premier terme est une chaîne directement puis on fait un test si il est valeur ou non (répéter lire(a) val(a,x,e) jusqu'a (e=0 )
      * e est l'erreur de conversion.
    • 2- On va lire (n) le nombre de termes de la suite.
    • 3- Un appel à la fonction compter qui calcule l'apparition de chaque chiffre de la chaîne.
    • 4- Concaténons le nombre d'apparitions avec le chiffre compté dans une chaîne jusqu'à obtenir toutes les apparitions et les chiffres de Ui-1 dans une nouvelle chaîne.
      ==>Ici mon idée a deux autres sous-idées :
      • 4.1-Pour sauvegarder cette chaîne, on la met dans un tableau de taille (n);
        Enfin on affiche chaque fois le tableau comme résultat final.
      • 4.2 -Mais j'ai une autre idée plus correcte : c'est d'afficher la chaîne directement et on travaille avec cette chaîne pour la deuxième opération. Sauvegardons le nouveau résultat dans une autre auxiliaire et cette fois on affiche l'auxiliaire.
        Initialisons la première à vide etc... jusqu'à obtenir le nombre de termes final (n).

    Merci, j'espère bien que vous m'aiderez et proposerez d'autre idées plus optimales que la mienne.

    Jetli.::

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Je suis d'accord sur certains points et je dirai que pendant la concatenation comme tu le vois ça serait plus simple d'utiliser une chaine.
    Citation Envoyé par JetliMohamed
    4- Concaténons le nombre d'apparitions avec le chiffre compté dans une chaîne jusqu'à obtenir toutes les apparitions et les chiffres de Ui-1 dans une nouvelle chaîne.
    ça va être quand même peu un lourd de faire ça à chaque fois sur chaque bout de la chaine .Moi je proposerai juste de déterminer le nombre maximum contenu dans la chaine et comme ça on fera une concatenation avec une boucle partant de 1 jusqu'a ce nombreMax ; et en tout deux boucles "for" seraient suffisantes
    En plus chez toi je ne vois pas intervenir le nombre de terme de la suite introduit
    On supose que l'algo ne tient pas compte des contrôles et je suppose aussi que je dispose des fonctions suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       ---->nbOccurence(String,Char) :Integer    Calcule le nombre d''occurence d''un caractere dans la chaine
       ---->chMax (String) :Integer       Renvoie le chiffre Maximum contenu dans cette serie de chiffres
    1. On lit le premier terme(U0) et on le converti bien sûr en chaine
    2. On lit le nombre de terme de la suite
    3. On fait un parcours de 1 jusqu'au nombre de terme , et à chaque fois on calcule le Chiffre Max de la chaine pour en faire un parcours allant de 1 jusqu'a ce nombre .Ensuite il suffit de faire une concatenation avec le nombre d'occurence de chaque chiffre+chiffre tout en prenant soin de rajouter la chaine precedemment concatenée a la nouvelle (attention dans la seconde boucle)
    4. Ne pas oublier les initialisations comme tu l'a dis en mettant la suite à vide avant le prochaine coup de boucle(la premiere boucle

    ---------
    Bon je crois que tout ça doit être un peu confus dès que j'ai un papier+stylo à portée de main je te remet ça au propre bien ecrit en algo
    @+

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    Bonjours mon ami Krachik,
    Krachik dit : pour en faire un parcours allant de 1 jusqu'a ce nombre .Ensuite il suffit de faire une concatenation avec le nombre
    d'occurencede chaque chiffre+chiffre
    Ce que je comprend pas c'est de quoi s'agit il le deuxième parcours
    pour en faire un parcours allant de 1 jusqu'a ce nombre
    Je sais que ce nombre est le chiffreMax mais quel est la résultat de cette opération .
    SVP je suis interresser bien de votre algorithme. Merci!!!!!
    Jetli.::

  6. #6
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Désolé pour le retard.
    En fait ce que je disais par cette fonction chMax :il consiste à trouver le chiffre le plus grand contenu dans cette serie de suite comme ça on es sûr d'avoir le nombre exact de chiffre contenu dans la serie sans doublons
    Exemple : U4 = 3112 le chiffre maxi dans cette serie est 3: et deduction les chiffres dans la serie seront 1 ,2 ,3 sans doublons. Mon but en faisant cette fonction etait de d'eviter d'avoir par exemple :
    U4 = 3112 et U5=13212112 (ne pas répeter le comptage c'est a dire une fois qu'un chiffre apparu à été compté ne plus le toucher au prochain comptage)
    Mais en y pensant la ,je vois plus simple :Il suffit de traiter le chaine precedente de serie en y renvoyant une chaine où on aura plus de doublons
    exemple U4 =3112 apres traitement on devrai avoir U4'= 312 ,Donc ce qu'on aura à faire c'est juste compter le nombre d'apparition de chaque chiffre de U4' dans U4 +chaque chiffre de U4'

    En gros la fonction qui devra nous renvoyer notre suite sera de ce genre qui prendra en entrée le premier terme de la suite (premier) et le nombre de terme de la suite(n)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         Suite <--------""
         chConverti<---------ChaineConvertEnttoString(premier);
         POUR i allant de 1 à n FAIRE
                 chSansDoublons <----- ElimDoublons(chConverti)
                 POUR j allant de 1 à longeur(chSansDoublons) FAIRE
                    Suite<--- Suite + nbOccur(chConverti,chSansDoublons[j])+chSansDoublons[j]
                 Fin Pour
                 Afficher Suite 
                 chConverti< ---- Suite //Affecter la suite pour une nouvelle action
                 Suite <-----"" //Liberer la suite pour une nouvelle concat
         FinPour
    Alors il faut ecrire :
    1.La fonction qui renvoie la nouvelle chaine sans doubon(ElimDoublons)
    2.La fonction pour le nombre d'occurence (nbOccur);

    Il ne reste plus qu'a ecrire tout ça . Dans ton algo pour le traitement que je fais dans ma seconde boucle ça va etre plus lourd sans fonctions adequates .
    Cordialement

Discussions similaires

  1. reauete suite à une requete
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/08/2003, 14h42
  2. [JSP][JDBC]1 seule connexion à la DB(suite)
    Par betherb dans le forum JDBC
    Réponses: 6
    Dernier message: 14/08/2003, 10h02
  3. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08
  4. Réponses: 2
    Dernier message: 04/03/2003, 23h24
  5. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39

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