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

  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 : 72
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 757
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 757
    Points : 5 194
    Points
    5 194

    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.

    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  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 : 48
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, 16h26

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