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 :

Mon programme retourne "nan" ou 0 tout le temps


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Mon programme retourne "nan" ou 0 tout le temps
    Bonjour,
    je ne comprend pas pourquoi mon programme renvoie toujours "nan" ou 0.
    J'avais a la base fait ce programme sous python et j'ai voulu le refaire en c++.
    Voici la capture des 2 consoles avec a gauche le c++ et a droite le python, pour comparer.
    Nom : developper.PNG
Affichages : 851
Taille : 13,6 Ko
    J'ai rajouter dans les 2 programmes l'affichage de "Binomfdp(nombre,prob,5)" pour pouvoir comparer les valeurs.
    Je vous prie de m'aider. Ci dessosu le code de main.cpp ( j'ai tout mis sous main.cpp pour l'instant).
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    #include <iostream>
    #include <cmath>
    #include<string>
     
     
    using namespace std;
     
     
    double Factoriel(double t)
    {
     
        double x(0.0);
        for(int i = 1; i <=t; ++i)
        {
            x *= i;
        }
       return q;
    }
     
    double Binomfdp(int n,double p, int q)
    {
     
        return ((Factoriel(n)) / (Factoriel(q) * Factoriel(n-q))) * pow(p,q) * pow(1-p,n-q);
    }
     
    double Binomfrep(int n, double p , int k)
    {
       double l(0.0);
        for (int compteur(0); compteur < k+1; compteur++ )
        {
            l = l + Binomfdp(n,p,compteur);
        }
        return l;
    }
     
     
    int main()
    {
        int nombre;
        bool  partie;
        string reponse;
        double prob;
        double k, m;
        do
        {
     
        cout << "Quel est le nombre d'essaie?" << endl;
     
        cin >> nombre;
        cout << "Quel est la probabilité du succes?" << endl;
        cin >> prob;
        k = 0;
        m = 0;
        while (Binomfrep(nombre, prob, k) <= 0.025)
         {
             k = k + 1;
         }
         cout << "A=" << k << endl;
         while (Binomfrep(nombre,prob, m) < 0.975)
         {
             m = m + 1;
         }
         cout << "B=" << m << endl;
         cout << Binomfdp(nombre,prob,5) << endl;
         cout << Binomfrep(nombre,prob,5) <<endl;
         cout << " On refais une partie? (O/N)" << endl;
         cin >> reponse;
     
     
     
         if (reponse == "O")
         {
             partie = true;
         }
         else
         {
             partie = false;
         }
        }while (partie);
     
        return 0;
    }

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Factoriel : initialisé à 0, puis des multiplications ...

    À ton avis, résultat ?

    PS : je n'avais pas vu : et en plus, retourne q, inconnue dans la fonction (de fait, ça ne devrait pas compiler. Que ça passe montre que quelque part tu as une variable globale gentiment nommée q, à moins que ce soit une coquille sans q.

    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 9
    Points
    9
    Par défaut merci, sujet résolu
    Merci, j'avais en effet fait l'erreur de retourner un "q" non déclarer dans la fonction, il faillait simplement faire un "return x" au lieu de "return q ".
    De plus, j'ai initialiser x a 1.0 au lieu de 0.0.
    Merci de ton aide.
    J'ai rajouter "long" devant chaque double ( sauf prob ) et fonction renvoyant des double pour des calculs plus important.
    Cependant lors de gros calcul le programme me ressort " A = 0" et "B = 0" instantanément, je ne comprend pas pourquoi.
    Nom : Capture.PNG
Affichages : 580
Taille : 5,8 Ko

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

Discussions similaires

  1. Mon programme retourne -1073741819
    Par jechmaki masudi dans le forum Débuter
    Réponses: 2
    Dernier message: 24/09/2014, 15h26

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