2016-04-28 13 views
-2

Bisher bin ich auf dieses Problem gestoßen. t scheinen konsequent Ausgabeergebnisse.Ein Programm, das ein Jahr eingibt und "Schaltjahr" anzeigt, wenn es ein Schaltjahr ist oder "kein Schaltjahr", wenn es kein Schaltjahr ist, ohne das Modulus-Symbol zu verwenden

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

Wie kann ich dieses Problem lösen?

+0

Ich weiß nicht, Turbo-C/C++, aber wenn Standard-Mathematik-Regeln noch halten das nicht immer wahr sein? | Nehmen wir an, das Jahr ist 1, wenn (1/4) * 4 gleich 1 ist oder wenn 0,25 * 4 gleich 1 ist –

+0

Schaltjahr hat ein grundlegendes Konzept, 1 --- es sollte durch 4 oder 400 teilbar sein, aber wenn es durch 100 teilbar ist, dann muss es durch 400 teilbar sein ...... Code nach diesem Konzept – piyushj

+0

@AndrewBone gibt es eine Formel wie ich prüfen kann, ob eine Zahl durch 4 teilbar ist? –

Antwort

0

wenn Sie, wenn einige Jahre durch den Benutzer sind Schaltjahre oder nicht eingegeben überprüfen möchten, müssen Sie nur eine Schleife schreiben.

In meinem Code habe ich auch eine Hilfsfunktion hinzugefügt (Turbo C++ hat Bool-Typ, richtig? Es ist Teil des Standards ...) mit der genauen Formel (Sie können das online finden). Beachten Sie, dass die Schleife endet, wenn der Benutzer etwas eingibt, das keine ganze Zahl (oder EOF) ist.

#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; 
} 

Zum Beispiel können Sie versuchen:

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!