Programme c anne bixestile

Résolu/Fermé
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 - 18 févr. 2010 à 15:24
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 - 18 févr. 2010 à 15:55
Bonjour,

Je suis en train de créer un programme afin de savoir si une année est bissextile ou non.
Voici mon programme:

#include <stdlib.h>

int main(void)
{
    int annee;      //déclaration des variables

    printf("veuillez rentrer l'annee que vous voulez pour savoir si elle est bisextille ou non: ");
    scanf("%d",annee);

                    //début du programme

        if (((( annee % 4) == 0) && (annee % 100 != 0)) || ((annee % 400 == 0))))
        {
            printf("%d est bissextile\n",annee);
        }

            else
            {
                printf("%d n'est pas bissextile\n",annee);
            }


    return 0;
}


Le hic est que le programme s'arrête à la première boucle, en gros l'année que l'on rentre est toujours bissextile.
Donc si une âme (ou des) charitable(s) pouvait m'aider à résoudre ce problème, je vous en serait très reconnaissant.

5 réponses

epoulos Messages postés 85 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 16 décembre 2011 493
18 févr. 2010 à 15:28
Bonjour,

Je crois que ceci est suffisant.

if (( annee % 4) == 0)
{
printf("%d est bissextile\n",annee);
}
else
{
printf("%d n'est pas bissextile\n",annee);
}

Je crois que ton problème vient du "&& (annee % 100 != 0)". Ca dépend aussi des valeurs avec lesquelles tu fais les tests.

Cordialement
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
18 févr. 2010 à 15:38
Je suis oblige de mettre le 100 car si une année est divisible par 100 elle n'est pas bissextile sauf si elle est divisible par 400.
0
epoulos Messages postés 85 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 16 décembre 2011 493
18 févr. 2010 à 15:49
Autant pour moi.
Sinon, tu as une parenthèse ")" en trop à la fin de ton If
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
18 févr. 2010 à 15:50
J'ai trouvé mon erreur un malheureux "&" oublier lors de la lecture des variable :/
Le programme fonctionne mais dès que je rentre une année comme 4000 alors la il n'y arrive plus car si une année est divisible par 4000 alors elle n'est pas bissextile.

Voici le nouveau programme que j'ai fait mais il considère l'année 4000 comme bissextile alors qu'elle ne l'est pas.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int annee;      //déclaration des variables

    printf("veuillez rentrer l'annee que vous voulez pour savoir si elle est bisextille ou non: ");
    scanf("%d", &annee);

                    //début du programme

        if (((( annee % 4) == 0) && (annee % 100 != 0) && (annee % 4000 != 0)) || ((annee % 400 == 0)))
        {
            printf("%d est bissextile",annee);
        }

            else
            {
                printf("%d n'est pas bissextile",annee);
            }


    return 0;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
18 févr. 2010 à 15:55
C'est bon j'ai résolue mon problème, merci pour ton aide epoulos.

Voici le programme pour ceux qui cherche a comprendre leurs erreurs ^^

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int annee;      //déclaration des variables

    printf("veuillez rentrer l'annee que vous voulez pour savoir si elle est bisextille ou non: ");
    scanf("%d", &annee);

                    //début du programme

        if (((( annee % 4) == 0) && (annee % 100 != 0) ) || ((annee % 400 == 0) && (annee % 4000 != 0)))
        {
            printf("%d est bissextile",annee);
        }

            else
            {
                printf("%d n'est pas bissextile",annee);
            }


    return 0;
}
0