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

C++ Discussion :

suite de syracuse


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Par défaut suite de syracuse
    Bonjour,
    je suis tout nouveau sur le forum et aussi en programmation en C++.
    Alors voilà, je vous expose mon probleme (peut-etre tout bete pour certains).
    Il faut que j'écrive un programme permettant d'afficher la suite de syracuse, à partir d'un nombre entré, de maniere récursive et itérative.

    Suite de syracuse :

    si n est pair -> U(n+1) = Un/2
    si n est impair -> U(n+1) = 3*Un + 1

    J'ai commencé à faire le programme de maniere recursive avec dev-cpp. Le voilà !
    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
    32
    33
    34
    35
     
    #include <iostream>
    using namespace std;
     
     
    int syrac (int n, int r)
    {
          if (n%2==0)
          {
    	r=n/2;
          }
    	else
                {             
    		r=3*n+1;
                }
     
        return r;
    }
     
    int main ()
    {
        int n;
        int r;
     
     
        cout << "Entrez un entier positif : " << endl;
        cin >> n;
     
        r = syrac (n,r);
        cout << "vol " << n << " -> " << n << " " << r << " " << endl;
     
     
        system("PAUSE");
        return 0;
    }
    J'aimerais savoir ce qu'il manque pour que ca affiche toute la suite car là je n'obtiens que le premier résultat.
    Merci de m'aider.

  2. #2
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    J'aimerais savoir ce qu'il manque
    Une boucle ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Par défaut
    Récursivité = PAS DE BOUCLE
    Je ne me trompe pas ?

    Donc merci de corriger mon programme.

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Pour obtenir de la récursivité, il faut une fonction récursive.
    Une fonction récursive est une fonction qui s'appelle elle-même.
    Là tu vas dire : oui mais ça s'arrête quand ?
    La réponse est : justement, tu dois décider de quand l'arrêter. Par exemple :
    si le rang est p, on ne calcule plus les termes suvants.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Par défaut
    Je suis d'accord avec ça. Mais je ne vois pas comment faire sans boucle en fait.

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Je ne vais pas t'écrire le code, mais ça donne quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int syracuse(int n,/* autre chose ? */ int dernier_rang)
    {
    if(n==dernier_rang)
    {
    // ici c'est fini
    }
    else {
    // on affiche le valeur de la suite au rang n, puis on invoque syracuse(n+1, /* autre chose ? */ dernier_rang)
    }
    }

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

Discussions similaires

  1. Suite de Syracuse
    Par Debinfo75 dans le forum Scheme
    Réponses: 5
    Dernier message: 21/07/2011, 23h02
  2. [Suite de Syracuse] Comment résoudre ce programme ?
    Par fredigston dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 04/02/2011, 09h48
  3. Suite de Syracuse
    Par Akhey dans le forum Pascal
    Réponses: 11
    Dernier message: 11/10/2009, 04h52
  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