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 :

Lib c++ et calcul factoriel


Sujet :

C++

  1. #1
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut Lib c++ et calcul factoriel
    bonjour ,

    Je cherche un lib qui peut donner tous les chiffres de factoriel 100 ( 100! ) .

    Cette fonction est implémentée avec python et je ne vois pas où
    trouver un équivalent avec c++ !

    @+

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Et pourquoi tu prendrais pas quelques minutes pour l'écrire ? Surtout si tu disposes du code source Python.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Et pourquoi tu prendrais pas quelques minutes pour l'écrire ? Surtout si tu disposes du code source Python.
    Pourquoi pas , mais je ne sais pas comment il faut s'y prendre ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import math
    fact = str(math.factorial(100))
    print(fact)
     
    resultat = 0
    for i in fact:
        resultat = resultat + int(i)
    print(resultat)

  4. #4
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Rien de bien compliqué dans le fait de convertir du code python en C++. Si tu ne sais pas ce qu'une fonction fait, regarde sa doc sur internet et ensuite cherche son équivalent en C++. Surtout que ce code n'a vraiment rien de compliqué...

  5. #5
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Ce qui est compliqué, c'est de créer une classe pour gérer les calculs avec assez de chiffres significatifs, car il y en a des chiffres significatifs dans 100!...
    Il existe heureusement des bibliothèques pour ça, comme https://gmplib.org/ (je ne sais pas si c'est la meilleure, ce n'est pas mon domaine du tout).
    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.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Python étant écrit en C, la source est disponible
    https://hg.python.org/cpython/file/7...module.c#l1218
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    ok , je peux déjà créer une lib perso , et mettre des classes et fonctions plus simples dedans .
    Mais pour le compilateur gcc et c++ , l'organisation de cet ensemble m'est totalement inconnu .

    Où trouver un tuto pour voir une installation de lib et les dossiers systèmes qui vont avec ,
    qu'il faudra déplacer ou modifier ?

    @+

  8. #8
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par bm Voir le message
    Où trouver un tuto pour voir une installation de lib et les dossiers systèmes qui vont avec ,
    qu'il faudra déplacer ou modifier ?
    Ici:
    http://alexandre-laurent.developpez....-bibliotheque/
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

  9. #9
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    @lautrec1 :

    ok , en fait ce tuto montre l'installation de lib et j'ai déjà installé la lib SFML avec codeblocks .

    Ce qui convient à mon attente , c'est les bases pour la création des fichiers d'une lib .
    Je pourrai ensuite tester cette lib avec codeblocks .


  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    À vrai dire, il n'y a pour ainsi dire pas de différence entre le fait de créer une application et celui de créer une bibliothèque... Il n'y a que la génération du fichier final qui change : une bibliothèque (statique) n'est qu'une archive qui contient l'ensemble des fichiers objet générés par la compilation, pour une bibliothèque dynamique, c'est un peu plus compliqué (surtout sous windows), parce que les symboles sont exportés et qu'il est possible de charger ces symboles dynamiquement.

    Mais le plus simple est, tout bonnement, de demander à ton EDI de générer un projet qui correspond à ce que tu veux faire... Tous les EDI "corrects" te proposent une série d'assistants qui te permettent de choisir le type de projet que tu veux créer... A toi de choisir le bon

    Notes cependant que, pour pouvoir tester une bibliothèque (qu'elle soit statique ou dynamique), tu devra l'utiliser dans un projet "séparé" de type "application" car une bibliothèque vient systématiquement sans la fonction principale main
    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

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Juste une remarque à 2€ :
    - Il y a un DllMain dans les Dll Windows (initialisation des données de la Dll lors du chargement de la Dll dans un processus ou lors de la création d'un thread)
    - Pour beaucoup de Dll, un exécutable "standard" comme les "harness" de tests ou l'objectViewer COM/OLE peuvent très souvent faire l'affaire.

  12. #12
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Python étant écrit en C, la source est disponible
    https://hg.python.org/cpython/file/7...module.c#l1218
    Dans un projet c++ console , je veux intégrer la source C du calcul de tous les chiffres de factoriel 100 .
    Supposons que je nomme cette lib facto dans ce projet codeblocks .
    Comment se présentera le codage ci-dessous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main()
    {
    // Appel lib facto
     
     
    // --------
    }
    // Après main comment déclarer facto ?
    {
     
    }
    Je rappelle que je débute avec c++ ..
    Os Ubuntu sur pc

  13. #13
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut
    La façon de décorer des noms de variables et de fonctions par le compilateur se fait différemment être le C et le C++.

    Pour avoir une décoration de forme C++ pour les fonctions C, il faut les déclarer au sein d'un bloc extern "C" {}, avant de les appeler.
    Source: Eckel, Thinking in C++ 2.

    EDIT : extern "C" {} au lieu de extern "C" {};
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

  14. #14
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Avec facto.h :

    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
    #ifndef FACTO_H_INCLUDED
    #define FACTO_H_INCLUDED
     
    extern "C" {
     
    /* Math module -- standard C math library functions, pi and e */
     
    /* Here are some comments from Tim Peters, extracted from the
       discussion attached to http://bugs.python.org/issue1640.  They
       describe the general aims of the math module with respect to
       special values, IEEE-754 floating-point exceptions, and Python
       exceptions.
     
      ..... tous le module >>https://hg.python.org/cpython/file/7937aa6b7e92/Modules/mathmodule.c#l1218
     
    }
     
    #endif // FACTO_H_INCLUDED
    La compilation bloque sur :

    #include "Python.h"
    #include "_math.h"

    Python.h est un gros bazar >> https://hg.python.org/cpython/file/5...clude/Python.h


  15. #15
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut
    En pinaillant, tu ne dois dans le "extern" que déclarer (pas définir) que les fonctions que tu utilises et placer les définitions dans un autre fichier .c .

    Bien sûr, le problème n'est pas tellement que "Python.h" est gros mais surtout qu'il appelle lui-même d'autres .h qu'il faut aller chercher je-ne-sais-où. Le but n'est pas de télécharger tout le code de Python non plus.
    Une solution serait de dépouiller le code C que tu importes. Mais est-ce une solution tenable ?

    J'ai un peu surfé pour télécharger la librairie GMP (GNU), censée faire des opérations entre autres sur des BigInteger (je crois que Java dispose de cette classe bien utile), mais rien de concret de ce côté.

    Bon courage.

    Olivier
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

  16. #16
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Voir les possibilités , c'est déjà avancer . Un forum donne quelques points de vue mais
    peu souvent une solution très satisfaisante .

    C++ fait appel à des librairies quand elles existent .
    Python est plus compact dans le codage , avec des lib différentes .

    C'est bien de ne pas ignorer les deux ..

    [Résolu] pour la forme

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    L'idée n'était pas d'inclure Python mais de lire le code de leur méthode factoriel pour le réécrire dans ton programme..
    Rien qu'en le lisant, ça utilise en tout 4-5 méthodes seulement, toutes les méthodes de transformation en PyObject sont inutiles.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. Boucle de calcul factoriel
    Par devroot dans le forum Général Python
    Réponses: 2
    Dernier message: 20/10/2009, 18h22
  2. [PHP 5.2] JAVA & PHP : Calcul Factoriel
    Par thiory dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2009, 00h12
  3. probleme de calcul factoriel
    Par argon dans le forum C
    Réponses: 39
    Dernier message: 19/02/2007, 08h53
  4. [Math] Fonction pour calculer Factorielle(n)
    Par Asdorve dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 10/08/2006, 21h20
  5. Calcul Factorielle
    Par Mestoph dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 22h27

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