wieder Problem mit Quellcode aus Lehrbuch
-
Hi zusammen,
ich bin immer nochmit dem Lehrbuch von Ulrich Kaiser beschäftigt. In dem Buch wurde nun eine Aufgabe gestellt. Ich soll ein Datum ( Tag, Monat,Jahr) eingeben und das Programm prüft erst ob das Jahr ein schaltjahr ist. Dann soll das Programm anhand des Tages und des Monats festellen der wievielte Tag es in diesem Jahr ist.
Hier mein Code:
# include <stdio.h> # include <stdlib.h> # include <iostream> int main() { int tag, monat, jahr; int x, z, y; int schaltjahr; int a; /*Schaltjahr hat 365 Tage, kein Schaltjahr hat 364*/ x = 4; z = 100; y = 400; printf( "Den Tag, Monat und das Jahr angeben: "); scanf( "%d %d %d", &tag, &monat, &jahr); if ( jahr / x ) { if ( jahr / z ) { if ( jahr / y ) schaltjahr = 1; else schaltjahr = 0; } else schaltjahr = 1; } else schaltjahr = 0; if ( monat == 1) a = tag; if ( monat == 2) a = 31 + tag; if ( monat == 3) a = 31 + (28 + schaltjahr) + tag; if ( monat == 4) a = 31 + (28 + schaltjahr) + 31 + tag; if ( monat == 5) a = 31 + (28 + schaltjahr) + 31 + 30 + tag; if ( monat == 6) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 tag; if ( monat == 7) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + tag; if ( monat == 8) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + tag; if ( monat == 9) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + tag; if ( monat == 10) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + tag; if ( monat == 11) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + tag; if ( monat == 12) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + tag; printf( "Es ist ein Schaltjahr und es ist der: %d Tag.", a); std::fflush( stdin); std::cin.get(); }Ich habe den Code selber geschrieben und er weicht etwas dem Lösungscode ab. Das Problem ist aber bei meinem Code und dem des Lösungscodes kommt es beim Compiler zu dieser Fehlermeldung:
1>c:\users\benni\documents\visual studio 2008\projects\üben\üben\üben.cpp(20) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306): Siehe Deklaration von 'scanf' 1>c:\users\benni\documents\visual studio 2008\projects\üben\üben\üben.cpp(48) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'tag'Ich versteh aber nicht was das Problem ist, da ich aus der Fehlermeldung lese das ein ; fehlt und das es vor dem Bezeichner tag kommt. Aber ich werde da nicht schlau raus. Zumal das die selbe Fehlermeldung beim Lösungscode ist.
Kann mir da jemand mal unter die Arme greifen?
-
# include <iostream> using namespace std; int main() { int tag, monat, jahr; int x, z, y; int schaltjahr; int a; /*Schaltjahr hat 365 Tage, kein Schaltjahr hat 364*/ x = 4; z = 100; y = 400; cout<< "Den Tag, Monat und das Jahr angeben: "; cin>>tag>>monat>>jahr; if ( jahr / x ) { if ( jahr / z ) { if ( jahr / y ) schaltjahr = 1; else schaltjahr = 0; } else schaltjahr = 1; } else schaltjahr = 0; if ( monat == 1) a = tag; if ( monat == 2) a = 31 + tag; if ( monat == 3) a = 31 + (28 + schaltjahr) + tag; if ( monat == 4) a = 31 + (28 + schaltjahr) + 31 + tag; if ( monat == 5) a = 31 + (28 + schaltjahr) + 31 + 30 + tag; if ( monat == 6) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 tag; if ( monat == 7) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + tag; if ( monat == 8) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + tag; if ( monat == 9) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + tag; if ( monat == 10) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + tag; if ( monat == 11) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + tag; if ( monat == 12) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + tag; cout<< "Es ist ein Schaltjahr und es ist der: "<<a<<" Tag."; std::cin.get();std::cin.get(); }
-
also die fehlermeldung zu scanf ist weg, aber es fehlt angeblich immer noch ein ; vor dem Bezeichner tag
moment mal in der if bedingung darf durch nur = >< stehen oder? weilderwert doch nur wahr oder falsch sein kann.
-
# include <iostream> using namespace std; int main() { int tag, monat, jahr; int x, z, y; int schaltjahr; int a; /*Schaltjahr hat 365 Tage, kein Schaltjahr hat 364*/ x = 4; z = 100; y = 400; cout<< "Den Tag, Monat und das Jahr angeben: "; cin>>tag>>monat>>jahr; if ( jahr / x ) { if ( jahr / z ) { if ( jahr / y ) schaltjahr = 1; else schaltjahr = 0; } else schaltjahr = 1; } else schaltjahr = 0; if ( monat == 1) a = tag; if ( monat == 2) a = 31 + tag; if ( monat == 3) a = 31 + (28 + schaltjahr) + tag; if ( monat == 4) a = 31 + (28 + schaltjahr) + 31 + tag; if ( monat == 5) a = 31 + (28 + schaltjahr) + 31 + 30 + tag; if ( monat == 6) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 /*Hier fehlt ein Plus*/ tag; if ( monat == 7) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + tag; if ( monat == 8) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + tag; if ( monat == 9) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + tag; if ( monat == 10) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + tag; if ( monat == 11) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + tag; if ( monat == 12) a = 31 + (28 + schaltjahr) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + tag; cout<< "Es ist ein Schaltjahr und es ist der: "<<a<<" Tag."; std::cin.get();std::cin.get(); }
-
Verflucht...
Danke ist schwer den Überblick zu behalten. Ich werd es gleich mal probieren.