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 :

Calculer le factorielle d'un nombre (Dev-C++)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Stagiaire OFPPT
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Stagiaire OFPPT

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut Calculer le factorielle d'un nombre (Dev-C++)
    Bonjour tout le monde :
    J'aimerai bien que vous me donnez un soutient pour pouvoir connaître ou j'ai commue l'erreur dans ce programme pour débutant.
    Voila le 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
    #include <stdio.h>
    #include <stdlib.h>
    main()
    {
        int X,i,Fac;
        printf (" Veuillez entrez une valeur :\n " );
        scanf ("%d",&X);
        if (X>0) {
            for (i=1;i<X;i--)
                Fac=X*i;
            printf (" Le factorielle de %d est : %d\n ",X,Fac);
        }
        else if(X==0)
            printf (" Le factorielle de %d est : 1 ",X);
        else
            printf(" Veuillez entrez un nombre posetive\n ");
        system (" pause ");
    }
    Quand j'exécute le programme et je fais entrer la valeur 3 il ne me repend pas vite et lorsqu'il affiche la réponse il donne : -2147483648
    Merci d'avance pour tous les gens qui mon aidaient.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il faudrait savoir si tu veut faire ton programme en C ou en C++. Tel qu'écrit, même s'il est presque correct en C++, il utilise un style d'écriture qui n'est pas du tout idiomatique en C++ (mais plus en C).

    Sinon, je n'ai pas tout lu en détails, mais ton i-- me semble très louche : Tu pars de 1, tu veux aller à X qui est positif, ce n'est pas en décrémentant que tu y arriveras
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    un plus des remarques de JolyLoic:

    *) tu risques rapidement de dépasser les limites d'un int lors du cacul de n!

    *) un n! est toujours supérieur ou égal à 1 (dans ton programme actuel, la première boucle consiste à multiplier par 1, ce qui n'est pas très util. 0! =1 et 1! = 1)

    donc pourquoi un int et pas ununsigned int . Tu devrais aussi inclure un test pour éviter les dépassements de capacité (voir<limits.h>) .

    Le calcul de n! est le cas idéal pour inclure la récursivité:

    http://franckh.developpez.com/tutori...i/recursivite/

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Personnellement, je suis relativement opposé à l'idée qui consiste à utiliser des calculs comme la factorielle ou l'exponentielle pour introduire la récursivité.

    De manière générale, j'estime qu'il n'est pas bon d'introduire la récursivité sur des algorithmes qui peuvent parfaitement s'effectuer avec de simples boucles .

    Ce n'est bien sur qu'un avis personnel, mais le problème des tours de Hanoï me semble bien plus adapté pour cela (car il est beaucoup plus difficile de s'en sortir avec des boucles)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre du Club
    Homme Profil pro
    Stagiaire OFPPT
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Stagiaire OFPPT

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Merci pour votre aide et votre générosité mes amis.
    Je vais consulter votre proposition, il me faudra aussi travailler dur pour comprendre les fonctionnalités et les secrets de ce: Dev-C++ et la programmation en général, parce que comme vous le savez déjà, je ne suis q'un petit débutant :p

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Matadox Voir le message
    Merci pour votre aide et votre générosité mes amis.
    Je vais consulter votre proposition, il me faudra aussi travailler dur pour comprendre les fonctionnalités et les secrets de ce: Dev-C++ et la programmation en général, parce que comme vous le savez déjà, je ne suis q'un petit débutant :p
    Attention : Dev-C++ n'est jamais qu'un EDI (Environnement de Développement Intégré). C'est à dire que c'est un ensemble d'outils composé
    d'un éditeur de texte, d'un compilateur, d'un éditeur de liens et d'un débogueur qui fonctionnent correctement ensemble.

    C'est un peu comme si tu disais que tu dois utiliser un batteur de la marque machin pour battre des oeufs en neige: cela n'a absolument aucun sens, parce que n'importe quelle marque de batteur ou un simple fouet manuel fait tout aussi bien l'affaire .

    Tu peux parfois être confronté à des problèmes propres à ton EDI, comme par exemple, le fait que le développement de Dev-C++ a longtemps été en sommeil et qu'il semble que sa dernière version utilise une version du compilateur qui n'est pas la plus récente, mais la plupart des problèmes auxquels tu sera confronté se résument souvent à :
    1. des problèmes d'algorithmie (comprends : de logique à mettre en place)
    2. des problèmes de conception (comprends : le fait de décider qui fait quoi et qui interagit avec quoi)
    3. des problèmes liés à une subtilité du langage (comprends : la manière dont le compilateur réagit face à une situation donnée).
    Tes principaux problèmes ici sont des problème d'algorithmie -- de logique à mettre en oeuvre pour obtenir le résultat auquel tu t'attends -- et d'utilisation du langage : Ton code est valide, mais utilise beaucoup trop les possibilités issues du "sous ensemble" que C représente dans C++ pour être considéré comme "du beau C++ à la mode de chez nous".

    Loic t'a montré la piste pour résourde le problème d'algorithmie. Je te proposerais volontiers de lire la deuxième ligne de ma signature, d'y réfléchir trente seconde et d'appliquer ce qu'elle pourra t'avoir inspiré. De manière générale, elle pourrait servir de ligne de conduite pour tous les développements .

    Une fois que tu auras résolu le problème d'algorithmie, reviens nous montrer ton code. Nous nous ferons un plaisir de t'indiquer comment en faire un code plus proche de ce que l'on appelle le C++
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Calculer la factorielle d'un nombre en C
    Par planete.game57 dans le forum Débuter
    Réponses: 26
    Dernier message: 19/10/2009, 23h12
  2. script samba qui calcule le factoriel d'un nombre entier
    Par miryam22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/05/2008, 10h00
  3. Prog pour calculer la factorielle d'un nombre
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 09h42
  4. Calcul de la factorielle d'un nombre naturel
    Par Sadgunner dans le forum Pascal
    Réponses: 9
    Dernier message: 20/06/2006, 21h56
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00

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