begin process at 2008 07 19 09:05:42
1 212 728 membres
67 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SYRACUSE


Information sur la source

Catégorie :Application Niveau : Débutant Date de création : 22/01/2003 Date de mise à jour : 22/01/2003 09:30:02 Vu : 1 480

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

selon syracuse, si un nombre est pair, on le divise par 2. si il est impair, on le multiplie par 3 et on ajoute 1.

ce prog montre la récursivité, et calcule le nombre d etapes et la hauteur maximum que le nombre atteint.

Source

  • #pragma hdrstop
  • #pragma argsused
  • #include <conio.h>
  • #include <iomanip.h>
  • #include <iostream.h>
  • int syracuse(int n, int *hauteur) ;
  • int _syracuse(int n, int *hauteur) ;
  • void main(void)
  • {
  • int n ;
  • int hauteur ;
  • int etapes ;
  • cout << "************Syracuse************" << endl ;
  • cout << endl << "entrez un nombre : " ;
  • cin >> n ;
  • etapes = syracuse(n, &hauteur) ;
  • cout << endl << "hauteur : " << hauteur ;
  • cout << endl << "etapes : " << etapes ;
  • cout << endl << "appuyer sur une touche pour terminer..." ;
  • getch() ;
  • }
  • //---------------------------------------------------------------------------
  • int syracuse(int n, int *hauteur)
  • {
  • *hauteur = n ;
  • return _syracuse(n, hauteur) ;
  • }
  • int _syracuse(int n, int *hauteur)
  • {
  • if (n == 1)
  • return 0 ;
  • if (n%2) // impair
  • {
  • n = n*3+1 ;
  • if (n> *hauteur)
  • *hauteur = n ;
  • }
  • else // pair
  • n = n/2 ;
  • cout << endl << "nombre : " << n ;
  • return _syracuse(n, hauteur)+1 ;
  • }
#pragma hdrstop

#pragma argsused

#include <conio.h>
#include <iomanip.h>
#include <iostream.h>
int syracuse(int n, int *hauteur) ;
int _syracuse(int n, int *hauteur) ;

void main(void)
    {
    int n ;
    int hauteur ;
    int etapes ;

    cout << "************Syracuse************" << endl ;
    cout << endl << "entrez un nombre : " ;
    cin >> n ;

    etapes = syracuse(n, &hauteur) ;

    cout << endl << "hauteur : " << hauteur ;
    cout << endl << "etapes : " << etapes ;

    cout << endl << "appuyer sur une touche pour terminer..." ;
    getch() ;
    }
//---------------------------------------------------------------------------

int syracuse(int n, int *hauteur)
    {
    *hauteur = n ;

    return _syracuse(n, hauteur) ;
    }

int _syracuse(int n, int *hauteur)
    {
    if (n == 1)
        return 0 ;

    if (n%2)   // impair
        {
        n = n*3+1 ;
        if (n> *hauteur)
            *hauteur = n ;
        }
    else            // pair
        n = n/2 ;

    cout << endl << "nombre : " << n ;
    return _syracuse(n, hauteur)+1 ;
    }
  • signaler à un administrateur
    Commentaire de GoldenEye le 22/01/2003 11:14:22

    Tu m'expliques le problème de départ plus clairement ? Syracuse est une ville sicilienne non ?

  • signaler à un administrateur
    Commentaire de loraine9999 le 22/01/2003 18:47:28

    alors... si un nombre est pair tu fais n/2 et si il est impair tu fais n*3+1 : exemple

    3 -&gt; impair donc -&gt; 3*3+1 = 10
    10 -&gt; pair donc -&gt; 10/2 = 5
    5 -&gt; impair donc -&gt; 5*3+1 = 16
    16 -&gt; pair donc -&gt; 16/2 = 8
    8 -&gt; pair donc -&gt; 8/2 = 4
    4 -&gt; pair donc -&gt; 4/2 = 2
    2 -&gt; pair donc -&gt; 2/2 = 1

    avec n importe quel nombre tu arriveras a la fin a 1.
    dans mon prog je calcule combien d etapes il faut a un nombre que tu saisi pour arriver a ce resultat, et la hauteur max atteinte comme ici 16.

    pour syracuse aucune idée si c'est une ville sicilienne sorry ;-)

  • signaler à un administrateur
    Commentaire de 24Karas le 23/01/2003 08:10:30

    T'a raison Goldeneye Syracuse est une ville sicilienne. Mais il y en a une au USA aussi. Voila
    Sinon ton prog Loraine il a l'air bon.
                                                           @++

  • signaler à un administrateur
    Commentaire de nEUrOne le 23/01/2003 12:53:27

    en gros, ca servait à quoi, construire des formes pyramidales ?

  • signaler à un administrateur
    Commentaire de mirs le 09/04/2003 14:29:03

    allo

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS