2016-04-28 2 views
-2

Jusqu'à présent, j'ai trouvé cela mais il ne le fait pas t semblent résultats de sortie de manière cohérente.Un programme qui saisit une année et affiche «année bissextile» s'il s'agit d'une année bissextile ou «année bissextile» si ce n'est pas l'année bissextile sans utiliser le symbole de module

if (year/4*4==year) 
{ 
cout<<"It is a leap year!"; 
} 
else 
{ 
cout<<"It is not a leap year!"; 
} 

Comment puis-je résoudre ce problème?

+0

Je ne sais pas turbo-C/C++, mais si les règles mathématiques standard tiennent encore sera pas toujours vrai? | disons que l'année est 1 si (1/4) * 4 vaut 1 ou si 0,25 * 4 vaut 1 –

+0

l'année bissextile a un concept de base, 1 --- elle devrait être divisible par 4 ou 400, mais si elle est divisible par 100, alors il doit être divisible par 400 ...... code selon ce concept – piyushj

+0

@AndrewBone y at-il une formule sur la façon dont je peux vérifier si un nombre est divisible par 4? –

Répondre

0

Si vous voulez vérifier si quelques années saisies par l'utilisateur sont des années bissextiles ou non, il vous suffit d'écrire une boucle.

Dans mon code, j'ai également ajouté une fonction d'aide (Turbo C++ a bool type, n'est-ce pas? de la norme ...) avec la formule exacte (vous pouvez le trouver en ligne). Notez que la boucle se termine lorsque l'utilisateur entre quelque chose qui n'est pas un nombre entier (ou EOF).

#include <iostream> 

bool is_leap(int y) 
{ 
    return y % 400 == 0 || (y % 100 != 0 && y % 4 == 0); 
} 

int main() 
{ 
    int year; 

    while (std::cin >> year) 
    { 
     if (is_leap(year)) 
     { 
      std::cout << year << " is a leap year!\n"; 
     } 
     else 
     { 
      std::cout << year << " is not a leap year.\n"; 
     } 
    } 

    return 0; 
} 

Par exemple, vous pouvez essayer:

1857 is not a leap year. 
1900 is not a leap year. 
1980 is a leap year! 
1991 is not a leap year. 
2000 is a leap year! 
2016 is a leap year!