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 :

Calcul de factorielle : programme inopérant


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Par défaut Calcul de factorielle : programme inopérant
    Bonjour,

    Voila un peu ce que j'ai écris comme code (calcul du factoriel) :
    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
    #include <cstdio>
    using namespace std;
    main ()
    {
        int i,;
        int a=1;
        printf("entrez le nombre svp\n");
        scanf("%d",&a);
        for(i=1;i<=a;i++)    
         {
           a=a*i;
         printf("le factoriel de %d est:%d",a);
         scanf("%d",&a);
         }
    }
    un autre (vérification qu'une année est bissextile) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <cstdio>
    using namespace std;
    main ()
    {
        int an;
        printf("entrez l'annee svp\n");
        scanf("%d",&an);
        if(an%2==0)   // (à ce niveau là j'ai remarqué qu'il n'exécute pas le calcul)
        {
            printf("l'annee bissextile est:",an);
              scanf("%d",&an);
        }    
    }
    MERCI.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("le factoriel de %d est:%d",a);
    Il manque une variable pour que le printf(); fonctionne correctement.

  3. #3
    ony
    ony est déconnecté
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <cstdio>
    using namespace std;
    main ()
    {
        int i;
        int a,op;
        printf("entrez le nombre svp\n");
    // Gestion d'erreur d'entrée du variable a
    do
    {
        scanf("%d",&a);
    } while (a>=1)
    
    op = a;
    
        for(i=1;i<=a;i++)    
         {
           a=a*i;
         
         }
    printf("le factoriel de %d est:%d",op,a);
         scanf("%d",&a);
    }
    Note: pour la factorielle tu peux enlever le SCANF du dernier, cela ne servirai à rien.

    Pour déterminer si une année est une année bissextile, procédez comme suit :

    Si l'année est divisible par 4, passez à l'étape 2, passez à l'étape 5.
    Si l'année est divisible par 100, passez à l'étape 3. Sinon, passez à l'étape 4.
    Si l'année est divisible par 400, passez à l'étape 4. Sinon, passez à l'étape 5.
    L'année est une année bissextile (elle a 366 jours).
    L'année n'est pas une année bissextile (elle a 365 jours)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <cstdio>
    using namespace std;
    main ()
    {
        int an;
        printf("entrez l'annee svp\n");
        scanf("%d",&an);
     
        if (an%4==0) // if te manque le resultat du calcul
        {
            printf("l'annee bissextile est:",an);
        }    
    }
    Bonne journée.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par lass vegas Voir le message
    Ici on est en C, pas en C++...

    Citation Envoyé par lass vegas Voir le message
    un autre (vérification qu'une année est bissextile) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if(an%2==0)   // (à ce niveau là j'ai remarqué qu'il n'exécute pas le calcul)
    Il t'est quand-même pas interdit de refléchir au préalable. C'est tous les deux ans une année bissextile ???

    Citation Envoyé par ony Voir le message
    Pour déterminer si une année est une année bissextile, procédez comme suit :

    Si l'année est divisible par 4, passez à l'étape 2, passez à l'étape 5.
    Si l'année est divisible par 100, passez à l'étape 3. Sinon, passez à l'étape 4.
    Si l'année est divisible par 400, passez à l'étape 4. Sinon, passez à l'étape 5.
    L'année est une année bissextile (elle a 366 jours).
    L'année n'est pas une année bissextile (elle a 365 jours)
    Ce parcours d'étapes est-il vraiment nécessaire ? C'est pas super compliqué de tester en une fois la divisibilité par 4 mais pas par 100 ; ou bien par 400 ; plutôt que passer par ce parcours d'étapes qui nécessitera alors l'emploi de goto...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Par défaut
    salut,

    la condition de contrôle de while est la condition de continuité pas d'arrêt.
    il ne faut pas changer la valeur de a durant le calcul.

    Pour les années bissextiles il faut vérifier:
    -si l'année est divisibles par 4 mais non divisibles par 100 .
    -ou si elle est divisible par 400.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Tu n'es pas là pour donner la solution des exercices (du-moins pas directement), mais pour aider l'auteur à la trouver lui-même. Relis la charte du forum.
    Si, après évolution du topic, tu vois que l'auteur a bien avancé de lui-même mais qu'il a encore du mal à finir, alors dans un second temps tu peux envisager de terminer pour lui. Mais pas à ce niveau où il est visible que l'auteur n'a pas travaillé (du-moins pas ici).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Par défaut
    Merci pour vos remarques.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2008, 13h38
  2. exception dans un calcul de factorielle
    Par ranell dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2007, 19h01
  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. Calcul du factorielle
    Par knecmotet dans le forum C
    Réponses: 15
    Dernier message: 16/09/2005, 11h33
  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