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 :

Code qui simule la fonction pow()


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par défaut Code qui simule la fonction pow()
    Bonsoir, à tous.
    J'espère que vous allez-bien en cette belle soirée.

    Je vous écris pour vous demander une aide concernant un code que j'ai réalisé.
    J'aimerai en faite recréer le même code que je vais vous présenter avec la fonction pow() mais avec un code manuel et non par l'intermédiaire d'une fonction prédéfinie tels que pow()... Mais malheureusement je n'y arrive pas je dois avoir un bug avec la formule, mais je ne trouve pas ou ce trouve le bug donc je fais appel à vos connaissances afin de m'aider à résoudre ce petit code

    je vous remercie d'avance et vous dit à bientôt.


    Voici les deux codes.



    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
     
     
    //Code fonctionnelle avec fonction pow().
     
    #include<iostream>
    #include<cmath>
     
    using namespace std;
    int main()
    {
    	int n;
    	double S=0;
    	cout<<"Entrer un nombre:";
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		S=S+ pow(i,-1);
     
     
    	}
    	cout<<"Voila la somme S=1 +½+⅓+...1/n: "<<S;
    }

    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
     
     
    //Code non fonctionelle sans fonction prédéfinie de pow() ...
     
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
        int i, S = 1;
        double Div = 0.0;
        double Somme = 0.0;
     
     
     
        cout <<"Veuillez entrer une valeur à calculer  svp : " <<endl;
        cin >> Div;
     
        for (i = 1; i <= Div; i++)
        {
             Somme += S / 1 + 1 / Div ;                                         
                                                                                // S=¹/¹+½+⅓...
                                                                                // Peut encore s'écrire .
                                                                                // S=1-¹+2-¹+3-¹..
        }
     
     
     
       cout <<"Voici le résultat : " << Somme <<endl;
     
        return 0;
    }
    Voila, j'espère que vous allez pouvoir m'aider à y voir plus clair et me montrer ou est mon incompréhension ...
    Passez une excellente soirée.

    Aigle-Royal

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Tu as changé trop de choses entre les deux étapes. pow(i, -1), c'est 1.0 / i.
    Et S = S + ..., c'est S += ....
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 624
    Par défaut Pauvre Pow
    Bonjour,

    Je ne vois pas l'intérêt de pow ni dans le premier code ni dans le second.

    Comme Luc Hermitte l'a fait remarquer, le second code ne correspond nullement au premier (pour les valeurs > 0, il doit renvoyer une valeur d'autant plus proche de 1 par défaut que Div est grand, en fait 1-frac(Div)/Div, pour les autres valeur il renvoie 0).
    La première forme est une série divergente (lentement mais sûrement), il faut donc faire attention à la valeur maxi de n.

    Salutations

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour,

    Je ne vois pas l'intérêt de pow ni dans le premier code ni dans le second.
    Bonjour Guesset. C'est un exercice qu'on ma donné à faire (Avec pow) et je voulais le retranscrire de la même manière mais sans pow.

    Comme Luc Hermitte l'a fait remarquer, le second code ne correspond nullement au premier (pour les valeurs > 0, il doit renvoyer une valeur d'autant plus proche de 1 par défaut que Div est grand, en fait 1-frac(Div)/Div, pour les autres valeur il renvoie 0).
    La première forme est une série divergente (lentement mais sûrement), il faut donc faire attention à la valeur maxi de n.
    Salutations
    Je ne dit pas le contraire vu que je me suis en petit peu en mêler dans le code pour le retranscrire et je n'arrivais pas à comprendre comment faire pour traduire pow sans cette fonction c'était donc le but de ma question , (étant donner que je débute j'ai des erreurs) ...

    Merci et bonne journée.

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    J'avais vu cela dans la section C : Problème fonction pow (<- lien)

    En réalité la formule mathématique est la suivante : pow(x,y) = exp(y * ln(x)) (et donc cette formule fonctionne avec des exposants négatifs et réels/ flottants)

    En code cela donne (c'est du C, note le nom de la bibliothèque math qui commence par C - donc une bibliothèque C à la sauce C++)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <cmath>
     
    //  ...
     
        size_t n=5;
        double result=std::exp(-1 * std::log(n));
     
     
        std::cout << "debug : " << result << " and " << std::pow(n, -1) << std::endl;

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par défaut
    Bonjour Foetus, oui c'est un exercice en "C" Car la personne qui me la donné à fait du "C" Mais elle ma donner
    cette exercice à faire en C++ vu que j'étudie le C++ ...

    bonne soirée.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Tu as changé trop de choses entre les deux étapes. pow(i, -1), c'est 1.0 / i.
    Et S = S + ..., c'est S += ....
    Bonjour Luc, merci bien pour ta réponse.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/08/2017, 14h32
  2. Réponses: 3
    Dernier message: 17/06/2016, 15h44
  3. un code qui demande de changer une fonction
    Par l1informatique dans le forum Général Python
    Réponses: 11
    Dernier message: 29/04/2014, 16h50
  4. Code qui plante en fonction du pc
    Par nanou2183 dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/09/2010, 09h54
  5. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h08

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