Forum

Einloggen | Registrieren | RSS  

silent_max(R)

E-Mail

01.04.2012,
18:02
(editiert von silent_max
am 01.04.2012 um 18:04)
 

Schaltjahr in C++ (Computertechnik)

Hallo liebe Gemeinde.

Ich habe heute Übungen für C++ bekommen.

Die Erste Übung lautet wie folgt:





Bin ich mit folgendem Quellcode auf dem richtigen Weg??

#include <iostream>
using namespace std;

bool istSchaltjahr(int Jahr)
{
if(Jahr/4)
if (Jahr/400)
{
Jahr = true;
}
else(Jahr/100)
{
Jahr = false
}
}

int main()
{
cout << "Pruefung auf Schaltjahr!" << endl;
cout << "Geben Sie ein Jahr ein!!" << endl;
int Jahr;
cin >> Jahr;
Jahr = Schaltjahr(Jahr);

return 0;
}

--
Where is the madness ...

brue(R)

01.04.2012,
19:44
(editiert von brue
am 01.04.2012 um 19:45)


@ silent_max

Schaltjahr in C++

>> if(Jahr/4)

Rechne das mal aus, wenn ich irrgend ein Jahr eingebe. zB bei 2012 kommt hier als Resultat 503 raus. Die if Bedingung ist immer wahr, wenn da etwas anderes als eine 0 in der Klammer steht. Die Bedingung wird also bei jedem Jahr wahr sein (Ausser im Jahr 0, da 0/4 = 0)
So gehts also nicht.

Ob eine Zahl durch eine andere ohne Rest teilbar ist, pruefst du am besten mit dem Modulo Operator (%)

gruss

Björn(R)

E-Mail

Dortmund,
01.04.2012,
19:45

@ silent_max

Schaltjahr in C++

» Hallo liebe Gemeinde.
»
» Ich habe heute Übungen für C++ bekommen.
»
» Die Erste Übung lautet wie folgt:
»
»
»
»
»
» Bin ich mit folgendem Quellcode auf dem richtigen Weg??
»
» #include <iostream>
» using namespace std;
»
» bool istSchaltjahr(int Jahr)
» {
» if(Jahr/4)
» if (Jahr/400)
» {
» Jahr = true;
» }
» else(Jahr/100)
» {
» Jahr = false
» }
» }
»
» int main()
» {
» cout << "Pruefung auf Schaltjahr!" << endl;
» cout << "Geben Sie ein Jahr ein!!" << endl;
» int Jahr;
» cin >> Jahr;
» Jahr = Schaltjahr(Jahr);
»
» return 0;
» }

Hallo,

in deinem Quelltext sind noch einige grobe Fehler:

- Zur Prüfung der vollständigen Teilbarkeit musst du das Ergebnis einer Modulo-Berechnung auf Null prüfen.
- Warum weist Du dem Übergabeparameter Jahr das Ergebnis zu? Entweder dem Funktionsnamen "istSchaltjahr" zuweisen oder direkt mit "return" zurückgeben.
- Die Rückgabe für denn Fall, dass das Jahr durch 4, aber weder durch 100 noch 400 teilbar ist, fehlt.
- Ausgabe im Hauptprogramm fehlt.

Viele Grüße,
Björn

79616363(R)

E-Mail

Leinfelden-Echterdingen,
02.04.2012,
05:29

@ silent_max

Schaltjahr in C++

Hab da mal vor Jahren was zu dem Thema gemacht, zum kompletten damaligen Beitrag geht's hier: http://www.spotlight-wissen.de/archiv/message/501242.html

Für dich ist eigentlich nur diese eine Zeile wichtig:

#define is_leap(y) ((y)%4==0 && ((y)%100!=0 || (y)%400==0))

Und dass es ANSI-C ist macht auch nix - Auf der Ebene ist der Unterschied zu C++ kaum merklich.

Viele Grüße,

Uli und die Mausen

--
„Wo kämen wir hin, wenn jeder sagte, wo kämen wir hin und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen.“

(Kurt Marti)