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 :

factoriel


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par d�faut factoriel
    bonjour
    je cherche a programmer une fonction qui a pour role de caluculer factoriel de n mais cette fonction est
    particuliere par ex pour n=7, elle fera
    1*3*5*7 et pour n=4 elle fera 2*4
    c est en C++ si qqun peut m aider
    merci Dan

  2. #2
    Membre chevronn� Avatar de piff62
    Inscrit en
    D�cembre 2003
    Messages
    431
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 431
    Par d�faut
    Ce n'est donc pas la fonction factorielle de n si tu ne fais pas n*n-1*n-2..*2*1
    Pour qu'on puisse aider explique nous comment tu sais quel multiplication tu dois faire

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par d�faut
    voila la fonction qui faut que je calcule est :
    n!! = pour des nombres paires 2*4*6*8*........*n
    = pour des nombres impaires 1*3*5*7*.....*n


    voici ce que j ai fait :

    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
    #include <iostream>
     
    using namespace std;
     
     
    int dfac (int &n){
      int fac=1, i;
       if (n%2==0){
         for (i=0;i<=n;i++)
           fac=fac*n;
           n=n*2;
      }
     
       else {
         for (i=0;i<n;i++)
           fac=fac*n;
           n=n-2;
       }
     
     return fac;
    }
    int main(){
      int n;
      cout << "Entre une veleur n dont tu veux calculer n!!:" << endl;
      cin >> n;
      int dfac (int &n);
      cout << n << "!!= " << dfac (n) << endl;
      return 0;
    }
     ca ne fonctionne pas expliquez moi svp mes erreurs en rouge 
    merci
    Dan

  4. #4
    Membre chevronn� Avatar de piff62
    Inscrit en
    D�cembre 2003
    Messages
    431
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 431
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int dfac (int &n)
    {
      int fac=1, i;
       if (n%2==0) // alors ton nombre est pair
    {
         for (i=2;i<=n;i+=2) // on commence a 2 .. car si on commence a 0 .. 0*n'importe quoi egal 0
           fac=fac*n;
      }
       else { // le nombre est imair
         for (i=1;i<=n;i+=2)
           fac=fac*n;
       }
    Perso je ferai un truc du genre .. essais et tiens moi au courant

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par d�faut
    tu peux m explique ce qui ne vas pas chez moi ?
    pourquoi tu mets & quand du declare la fonction a la variable ?
    Merci

  6. #6
    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
    Pas besoin de if si tu pars de n... (attention quand m�me aux conditions aux limites -- pascompliqu� pour autant)

    (Prendre le param�tre par r�f�rence n'a aucun sens)
    (D�clarer dfac dans le main() ne sert � rien. Il est d�j� d�fini, contente-toi de l'utiliser)
    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...

  7. #7
    Membre chevronn� Avatar de piff62
    Inscrit en
    D�cembre 2003
    Messages
    431
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 431
    Par d�faut
    Les & ne sont pas du tout necessaire ici .. tu peux les enlever !
    L'appel a la fonction se ferait ainsi :
    L'entete de la fonction serait
    Les & sont a utiliser avec precaution ! car c'est pour passer l'adresse memoire .. donc pour des int .. autant les passes directement !
    Et pour le reste c'es comme je te l'ai mis avant !
    j'ai pratiquement rien change .. sauf que au lieu de faire i++ dans le for .. j'ai fais i+=2
    Ce qui veut dire qu'on increment i de 2 a chaque passage dans la boucle (c'est bien ce qu'on veut .. avoir que les nombres pairs ou que les nombre impair)

  8. #8
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Bonjour,

    j'ai pas tout lu, mais pourquoi pas une fonction r�cursive ?
    si mes souvenirs sont bons, c'est pas le plus efficace en temps de calcul, mais c'est facile � programmer dans le cas pr�sent.


    Enjoy yourself !

  9. #9
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    non ?

    je pensais � �a

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned int f(unsigned int n)
    {
    	if (n<=1)
    		return 1;
     
    	unsigned int m = (n-2)>0 ? n-2 : 1;
    	return n*f(m);
    }

    Enjoy yourself !

  10. #10
    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
    Le deuxi�me test est inutile car englob� par le premier.
    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...

  11. #11
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    correct.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    unsigned int f(unsigned int n)
    {
       if (n<=1)
          return 1;
     
       return n*f(n-2);
    }


    Enjoy yourself !

  12. #12
    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 : 51
    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
    Si on veut aider le compilateur � optimiser la r�cursivit�, il peut �tre utile de la transformer en r�cursivit� terminale :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    unsigned int f(unsigned int n)
    {
      return f1 (n, 1);
    }
     
    unsigned int f1(unsigned int n, unsigned int a)
    {
       if (n<=1)
          return a;
     
       return f1(n-2, n*a);
    }
    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.

  13. #13
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    tu peux m'expliquer ?



    Enjoy yourself !

  14. #14
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Bonjour,

    je voulais juste dire que la fonction d�crite par gruni1 n'est pas une factorielle simple mais une multi-factorielle. Plus pr�cis�ment, dans le cas de gruni1, il s'agit d'une multi-factorielle sur les nombres paires ou impaires.

    Factorielle simple : n! = (n)(n-1)(n-2)(n-3).....(1)
    Multi-Factorielle paire : n!! = (n)(n-2)(n-4).....(2) avec n paire
    Multi-Factorielle impaire : n!! = (n)(n-2)(n-4).....(1) avec n impaire

    (notez bien le double emploi du point d'exclamation).

    Voici un lien vers un site qui d�taille les multi-factorielles et primorielle (factorielle de nombres premiers).

    http://membres.lycos.fr/villemingera...r/primorie.htm

    Voila.

    Flo.

  15. #15
    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 : 51
    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
    Citation Envoy� par bigboomshakala
    tu peux m'expliquer ?
    Par exempe : http://cermics.enpc.fr/polys/info1/main/node22.html
    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.

  16. #16
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par JolyLoic
    Citation Envoy� par bigboomshakala
    tu peux m'expliquer ?
    Par exempe : http://cermics.enpc.fr/polys/info1/main/node22.html
    merci



    Enjoy yourself !

Discussions similaires

  1. [D�butant][Conception] Factorielle en Java par recursivit�
    Par Sylvester dans le forum D�buter avec Java
    R�ponses: 9
    Dernier message: 02/11/2008, 20h42
  2. factoriel d'un nombre
    Par etoile1506 dans le forum C
    R�ponses: 10
    Dernier message: 03/12/2005, 15h46
  3. Calcul du factorielle
    Par knecmotet dans le forum C
    R�ponses: 15
    Dernier message: 16/09/2005, 11h33
  4. Chaine des caract�res et factorielle
    Par ixterm dans le forum Algorithmes et structures de donn�es
    R�ponses: 4
    Dernier message: 03/05/2005, 08h33
  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