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

avec Java Discussion :

[Suite de Syracuse] Comment résoudre ce programme ?


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut [Suite de Syracuse] Comment résoudre ce programme ?
    Bonjour,

    je sais que ce que je demande est vraiment trop, mais j'arrive pas à trouver un commencement acceptable pour ce sujet :

    La suite de Syracuse d'un nombre entier N est définie par la récurrence:

    Un = 0

    et pour tout entier >= 0 : Un+1 ={
    Un/2, si Un est pair
    3Un+1, si Un est impair

    La conjecture affirme que, pour tout n > 0, il existe un indice n tel que un = 1.

    Écrire un programme Syracuse.java qui demande un entier N à l'utilisateur et qui affiche sur une même ligne:
    le rang n le plus petit pour lequel un =1
    la moyenne des valeurs ui pour i allant de 0 à n
    le symbole :
    l'ensemble des valeurs de la suite, du rang 0 au rang n pour lequel un = 1.

    Par exemple, sur l'entrée de 15 votre programme soit afficher:
    17 38.6: 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
    car u17 est le premier élément de la suite qui vaut 1 et 38.6 est la moyenne des 18 premières valeurs de la suite (celles qui sont affichées), soit ici 694/18 ≈ 38.55.

    Ce serait vraiment cool si je pourrais avoir une solution, Merci.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si vous précisiez sur quoi vous coincez, parce qu'on ne va pas faire le travail pour vous.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    je voudrais savoir par quoi je pourrais commencer, et comment pourrais-je répéter l'opération, jusqu'à trouver 1.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    a priori; le plus simple estd'implémenter ça dans une méthode récursive:
    http://recursivite.developpez.com/?page=sommaire

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Voila ce que j'ai pu faire ! est-ce bon ?!




    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
    import java.util.Scanner;
     
    public class Syracuse {
     
    	public static void main (String [] args){
     
    	Scanner input = new Scanner(System.in);
     
    // demander un entier N
    System.out.print("Entrez un nombre entier N: ");
    int n = input.nextInt();
     
    do{
    if((n % 2) == 0)
    n /= 2;
    else
    n = 3*n+1;
    } while(n > 1);
    return;
    }
    }

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je vois pas dans votre code en quoi Un dépend de Un-1, je crois que vous devriez relire votre énoncé.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    j'vois vraiment pas, mais pas grave, je vais encore relire les cours et trouvez . Merci bien

  8. #8
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par fredigston Voir le message
    j'vois vraiment pas, mais pas grave, je vais encore relire les cours et trouvez . Merci bien
    Une bonne méthode consiste à prendre une feuille et un stylo, et a noter les valeurs des Un,Un-1, Un+1 et n au fur et à mesure du parcours de votre boucle.

    Je pense que l'erreur vous sautera ainsi aux yeux...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    68
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 68
    Points : 65
    Points
    65
    Par défaut
    Salut j'espère que ce code t'aideras à avancer
    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
     
    Scanner az = new Scanner(System.in);
            int i = az.nextInt();
            int x = 0;
            List<Integer> li = new ArrayList<Integer>(); //un tableau contenant que des entiers
            li.add(i); //ajout de U0 = la valeur saisie
            do
            {
                float b = i%2;
                if ( i%2 == 0)
                {
                    li.add(i/2);
                    i = i/2;
                }
                else
                {
                    li.add(3*i+1);
                    i = 3*i+1;
                }
                if (i == 1)
                    x = i;
            }while (x!=1);
            System.out.println(li.size()-1);
            float b =0;
            for (int y = 0 ;y<li.size();y++)
                b += li.get(y);
            b = b/li.size();
            System.out.println(" " + b +" : "+li);

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci bien pour vos différentes aides !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/05/2010, 16h17
  2. [CR]Comment résoudre ceci ?
    Par titdiable dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/12/2004, 13h10
  3. comment deployer un programme fait avec jbuilder
    Par showmetheway dans le forum JBuilder
    Réponses: 6
    Dernier message: 23/09/2003, 01h11
  4. Réponses: 8
    Dernier message: 05/06/2002, 11h55
  5. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29

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