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 d'un nombre [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Par défaut factoriel d'un nombre
    bonsoir
    ben ceci est un programme qui traite le factoriel d'un nombre donnée,mais je comprend pas quelques une de ces etappes;merci de clarifier un peu les choses pour moi...

    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
    #include<stdio.h>
    main()
    {
    int N;
    int I;
     
    double FACT;
    do
    {
    printf("entrez un entier naturel : ");
    scanf("%d", &N);
    }
    while (N<0);
    I=1;
    FACT=1;
    while (I<=N)
          {
              FACT*=I;
              I++;
    }
    .
    .
    .
    .
    pourkoi on a fait N<0 audebut pourkoi on a pas comencé directement par while (I<=N)..
    autre chose conçérne le meme probléme mais cette fois en utulisant la boucle for
    for(FACT=1.0, I=1 ; I<=N ; I++)
    ds cet exemple pouruoi on a fait FACT=1.0 pourquoi le 1.0(le point zéro)
    c tt merci davance.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: expliquer moi
    Citation Envoyé par etoile1506
    ben ceci est un programme qui traite le factoriel d'un nombre donnée,mais je comprend pas quelques une de ces etappes;merci de clarifier un peu les choses pour moi...

    #include<stdio.h>
    Merci de lire les regles du forum.

  3. #3
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Salut Etoile,

    le while(N<0) est en relation avec le Do c'est a dire que si l'utilisateur entre un nombre negatif la console va lui demander d'entrer un nombre a nouveau.

    Ensuite lorsque tu as un bon nombre N la deuxieme boucle while calcul le factorielle.

    Sinon pour le 1.0 c'est juste parceque FACT est un double, ce n'est pas obligatoire mais dans certains cas tu peux avoir un warning a la compilation ou des pertes d'information lors du cast (normalement du int vers le double il n'y a ni warning ni perte)

    XXiemeciel

  4. #4
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    Tu peux le faire de 3 façon differentes:

    WHILE:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    	int nb, i, fact;
    	printf("Donnez un nb: ");
    	scanf("%d",&nb);
     
    	fact = 1;
    	i=1;
     
    	while(i<=nb)
    	{
    		fact = fact*i;
    		i=++i;
    	}
     
    	printf("Le factoriel de %d est %d\n", nb, fact);
     
      system("PAUSE");	
      return 0;
    }
    DO-WHILE:
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    	int nb, i, fact;
     
    	printf("Donnez un nb: ");
    	scanf("%d",&nb);
     
    	fact=1;
    	i=1;
     
    	do
    	{
    		fact = fact*i;
    		i=++i;
    	}
    	while (i<=nb);  
     
    	printf("Le factoriel de %d est %d\n", nb, fact);
     
    	system("PAUSE");	
    	return 0;
    }
    FOR:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    	int nb, i, fact;
     
    	printf("Donnez un nb: ");
    	scanf("%d",&nb);
     
    	fact = 1;
     
    	for(i=1; i<=nb; i=++i)
    	{
    		fact = fact*i;
    	    printf("Le factoriel de %d est %d\n", nb, fact);
    	}
     
    	system("PAUSE");	
    	return 0;
    }
    Ton exercice (j'ai eu le même c'est pour ça que j'ai fait les 3 boucle) te montre comment utiliser la boucle do-while, il est donc logique d'utiliser cette boucle est pas une autre

  5. #5
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    En recursif, c'est aussi bien...

  6. #6
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    Tu oublies que c'est exercices écoles qu'il faut bien voir la base (notament des boucles) pour ensuite passer a quelque chose de mieux et en même temps plus dur pour des débutant(e)s.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    je pense qu'il est aussi intéressant d'utiliser la méthode récursive pour voir qu'ici le temps de calcul est tout de même plus long et qu'il y a plus de mémoire utilisée. C'est un bon exercice.
    Je me rappelle l'avoir fait lorsque je faisais du C++.

  8. #8
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut Re: factoriel d'un nombre
    Citation Envoyé par etoile1506
    bonsoir
    ben ceci est un programme qui traite le factoriel d'un nombre donnée,mais je comprend pas quelques une de ces etappes;merci de clarifier un peu les choses pour moi...

    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
    #include<stdio.h>
    main()
    {
    int N;
    int I;
     
    double FACT;
    do
    {
    printf("entrez un entier naturel : ");
    scanf("%d", &N);
    }
    while (N<0);
    I=1;
    FACT=1;
    while (I<=N)
          {
              FACT*=I;
              I++;
    }
    .
    .
    .
    .
    pourkoi on a fait N<0 audebut pourkoi on a pas comencé directement par while (I<=N)..
    autre chose conçérne le meme probléme mais cette fois en utulisant la boucle for
    for(FACT=1.0, I=1 ; I<=N ; I++)
    ds cet exemple pouruoi on a fait FACT=1.0 pourquoi le 1.0(le point zéro)
    c tt merci davance.
    Bonjour
    Pourrais tu éviter le langage sms stp?
    A la lecture de ce que tu demandes, je me demande si tu ne comprends pas le code ou si plutot tu n'as pas clairement compris le raisonnement qui mène au calcul d'une factorielle...
    Tu es au clair sur ce que c'est qu'une factorielle ?

  9. #9
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    PS: il faudrait rajouter un
    à la fin de ton code


    ds cet exemple pouruoi on a fait FACT=1.0 pourquoi le 1.0(le point zéro)
    FACT est un double. Pour initialiser un double tu fais ça:
    Si tu initialise un nombre avec "1" c'est que c'est un int

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par reggae
    ds cet exemple pouruoi on a fait FACT=1.0 pourquoi le 1.0(le point zéro)
    FACT est un double. Pour initialiser un double tu fais ça:
    Si tu initialise un nombre avec "1" c'est que c'est un int
    Mais il sera implicitement converti en double, car 'nombre' est de type double, donc ce n'est pas indispensable. Mais c'est plus clair.

  11. #11
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Ok merci de la précision

Discussions similaires

  1. script samba qui calcule le factoriel d'un nombre entier
    Par miryam22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/05/2008, 10h00
  2. Codage C++ de Factoriel d'un nombre entier
    Par theserialkiller10 dans le forum C++
    Réponses: 23
    Dernier message: 24/10/2007, 16h50
  3. Prog pour calculer la factorielle d'un nombre
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 09h42
  4. factoriel d'un nombre N
    Par vladimire dans le forum C
    Réponses: 9
    Dernier message: 01/12/2006, 12h42
  5. Calcul de la factorielle d'un nombre naturel
    Par Sadgunner dans le forum Pascal
    Réponses: 9
    Dernier message: 20/06/2006, 21h56

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