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

Langage Java Discussion :

Calcul de la factorielle de n , en java avec boucle do while . Souci d'affichage du programme.


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Calcul de la factorielle de n , en java avec boucle do while . Souci d'affichage du programme.
    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
    import java.util.*;
    public class puisance {
     
    	public static void main(String[] args) {
    		int n,x,j,i;
    		int s;
    		int p=1;
    		Scanner clavier = new Scanner(System.in);
    		System.out.println("Entrer votre nombre :");
    		 x=clavier.nextInt();
     
    		 System.out.println("Entrer la puisance voulu :");
    		 n=clavier.nextInt();
     
    		 do{
     
    			 s=0;
    			 j=x;
     
    			 do{
    				 s=s+p;
    				 j=j-1;
    			 }while(j!=0);
    			 i=n;
    			 s=p;
    			 i=i-1;
     
    		 }while(i!=0);
     
    		 System.out.println(x+"^" +n+ " = " +p);
    		 clavier.close();
    	}
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Premièrement, tu as une boucle infinie, parce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    do{
     
    /**...**/ 
        i=n;
        s=p;
        i=i-1;
    }while(i!=0);
    à chaque tour de boucle, on fait i=n, puis i=i-1, donc i=n-1 lorsqu'on teste i!=0. Si n>1, i n'est jamais égal à 0, donc ça boucle infiniment.
    Ce type d'initialisation de variable qui sert à boucler, on le fait avant d'entrer dans la boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    i=n;
    do{
     
    /**...**/ 
        s=p;
        i=i-1;
    }while(i!=0);
    Comme ça, ça boucle, i=n d'abord, puis i=n-1, i=n-2... jusqu'à ce que i==0.

    Maintenant, il faut que tu revois ton algorithme, parce que tu ne calcules pas la factorielle avec ce que tu fais. Normalement, il n'y a qu'une seule boucle.
    Factorielle de n, c'est le produit des nombres inférieurs ou égaux à n et supérieurs à 0. Donc n*n-1*n-2*n-3...*1 On reconnait là les valeurs que la boucle produit.
    Il suffit donc de partir d'un résultat initialisé à 1 (initialisé avant d'entrer dans la boucle bien sûr), et de le multiplier ce résultat à chaque tour de boucle par i. Tu peux éventuellement boucler jusqu'à i==1(while(i!=1)), puisque a*1==a, mais ça fonctionne avec while(i!=0)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Salut ,
    Il va falloir revoir votre algorithme. Voici un pseudo code qui peut vous aider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Soit N un entier donné
    Soit fact le résultat attendu initialisé à 1
    Tant que N>0
    fact=fact*N
    N=N-1
    Fin Tan que
    Retourner fact

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour,

    Attention aux règles de nommage des classes en java !
    à voir ici
    III-B. Classes

    • Première lettre en majuscule

    • Mélange de minuscule, majuscule avec la première lettre de chaque mot en majuscule

    • Donner des noms simples et descriptifs

    • Eviter les acronymes hormis les communs (Xml, Url, Html)

    • N'utiliser que des lettres [a-z][A-Z] et [0-9]


    Donc ta classe devrait plutôt être écrite comme ceci : Puissance (avec un 'P' majuscule)
    OS : LinuxMint 20

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir, j'ai du mal a trouver une solution pour faire le factorielle d'un nombre sans utilisation de "PRODUIT" . Car je vais le traduire en language assembleur Intel 8085 , du coup il n'y a pas une instruction pour le "produit" c'est la raison pour laquelle je veux que sa soit en somme avec la BOUCLE DO WHILE .

    En s'inspirant de cette code source , qui fait la puissance d'un entier (bien sur AUCUN PRODUIT est utilisé) ... J'aimerai que vous m'aidiez , MERCI !

    Voici le code :


    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
     
    import java.util.Scanner;
    public class m {
     
     public static void main(String[] args) {
     
     
        Scanner sc=new Scanner(System.in);
            int i,n,j,x,p,s;
            System.out.print("n=");
            n=sc.nextInt();
            System.out.print("x=");
            x=sc.nextInt();
            p=1;
            i=n;
     
          do{
             s=0;
             j=x;
             do{
              s=s+p;
              j=j-1;
             }while(j!=0);
            p=s;
            i=i-1;
            }while(i!=0);
        System.out.println(x+"="+p);
       sc.close();}
     
      }

  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
    ben tu te crée une fonction "multiplier" à partir d'additions, et tu l'appelle à chaque fois que t'as besoin d'une multiplication

Discussions similaires

  1. Calcul de la factorielle de n , en java avec boucle for
    Par mathlooty dans le forum Langage
    Réponses: 17
    Dernier message: 13/02/2018, 17h14
  2. Calcul et Modification des valeurs dans un Tableau avec Java
    Par Khalfe dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 25/09/2015, 02h36
  3. Calcul d'une factorielle en shell (Linux)
    Par MSM_007 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/10/2007, 20h43
  4. Programme de calcul d'une factorielle
    Par hassen_I3 dans le forum Assembleur
    Réponses: 1
    Dernier message: 14/12/2006, 18h35
  5. Calcul de la factorielle d'un nombre naturel
    Par Sadgunner dans le forum Pascal
    Réponses: 9
    Dernier message: 20/06/2006, 21h56

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