Programm zum Anzeigen vom Datum

Lucky Luke

Ensign
Registriert
März 2005
Beiträge
129
Servus,

ich besuche seit ein paar Wochen einen C++ - Kurs in der Volkshochschule. Letzte Woche habe ich da das erste Mal den Begriff der Klassen kennengelernt. Kommenden Mittwoch habe ich das nächste Mal den Kurs.

Der Dozent hatte diesmal allen Teilnehmern eine Aufgabe gegeben. Allerdings bin ich im Augenblick völlig ratlos, weil mir noch ein paar Grundlagen fehlen.

Hier erstmal die Aufgabe:

---------------------------------------------------------------------

Schreibt eine Klasse Datum mit den folgenden Funktionen:

addiereSekunde(int x)
addiereMinute(int x)
addiereStunde(int x)
addiereTage(int x)
addiereMonate(int x)
addiereJahre(int x)

Mit den entsprechenden Subtraktionen. Beachtet das es Schaltjahre gibt!
Es darf kein ungültiges Datum gespeichert werden (z.b. 40.12.)
Optional können auch entsprechende Klassen/Typen/enums für die Parameter geschrieben werden, sodass die Parameter immer gültige Werte haben.
z.B. addiereSekunde(Sekundentyp x)

---------------------------------------------------------------------

Mir ist z.B. völlig schleierhaft, wie man das programmiertechnisch umsetzen kann, dass das Programm auch auf Schaltjahre Rücksicht nimmt bzw. das kein falsches Datum angegeben wird.

Ok, jetzt hoffe ich, dass es im Forum einen begeisterten Programmierer gibt, der mir da bis Mittwoch eine Anwendung auf die Beine stellen und mir vor allem noch ein bisschen erklären kann!


Also noch mal: An alle Experten hier! Nehmt diese Aufgabe als Herausforderung an und stellt euer Können unter Beweis. Ich wäre euch sehr dankbar!!!

mfg lucky
 
Wie man auf Schaltjahre prüft kann man fast überall im Netz finden,
ist ne einfache Reihe von IF-Abfragen.
Für die Abfrage eines gültigen Datums könnte man ein Feld erstellen,
welches die max. Tage der Monate beinhaltet.

Für Fragen sind wir immer offen.
Wir sind allerdings nicht dazu da, dir die Arbeit abzunehmen.
 
Hallo Lucky Luke:

Die Definition eines Schaltjahres es noch ziemlich simpel:

  • Glatt durch 4 teilbare Jahre sind Schaltjahre.
  • Glatt durch 100 teilbare Jahre sind jedoch keine Schaltjahre.
  • Glatt durch 400 teilbare Jahre sind aber wieder Schaltjahre.

Aber bereits der folgende Punkt ist da so eine Sache
Es darf kein ungültiges Datum gespeichert werden
Dafür ist z.B. ersteinmal Wikipedia zu empfehlen aber auch http://www.ortelius.de/kalender/greg_de.php und http://www.kalendersysteme.de/deutsch/quellen/quellen.html.
Das sollte fürs erste reichen. Wie WingX schon geschrieben hat geholfen wird gerne.
 
Als erstes würde ich an deiner Stelle die Datei time.h includen.

Code:
#include <time.h>

struct tm *zeit; // Das Strukt tm ist in der Datei time.h definiert
time_t sec;       // time_t ebenfalls
time(&sec);      // Nun wird in sec geschrieben wie viele Sekunden vergangen sind
zeit=localtime(&sec); //aus den vergangenen Sekunden werden nun erechenet wie viele
                                  // Jahre, Monate, tage, Stunden usw. vergangen sind und in zeit geschrieben

cout<<"Heute ist der "<<zeit->tm_mday<<"."<<zeit->tm_mon+1<<"."<<zeit->tm_year+1900<<endl;


Hier nochmal eine Übersicht über die Struktur tm:

Code:
struct tm
{
  int tm_sec;   // Sekunden ( 0-59 )
  int tm_min;  // Minuten ( 0 -59 )
  int tm_hour;  // Stunden ( 0 - 23 )

 int tm_mday;  // Tag im Monat ( 1-31)
  int tm_mon;  // Monat ( 0 - 11 )
  int tm_year;  // Jahre seit 1900
 
  int tm_wday; // Wochentag ( 0 - 6 )
  int tm_yday;  // Tag im Jahr ( 0 - 365 )

  int tm_isdst;  // Sommerzeit ?
}

Ich hoffe das hilft dir weiter.
 
Zuletzt bearbeitet:
Hallo lucky,

nur als Vorschlag.

Um die Methoden zu vereinfachen reduziere doch alle Methoden auf eine, sprich schreibe eine Methode die Sekunden verarbeiten kann.

Danach musst Du nur noch Tage, Stunden, Monate, ... in Sekunden umrechnen und kannst dann die Sekunden Methode aufrufen.

Ansonsten sehe ich das genauso, wenn Dir hier ein fertiges Programm geliefert und erklärt wird, wozu gehst Du dann in den Kurs?

MfG

Arnd
 
@deamon777: Wenn er time.h includen würde, bräuchte er keine Klassen mehr zu schreiben, die die Zeit abbilden. Es geht sicherlich um das Verstehen von Klassen und Methoden. Der Vorschlag von arnd ist IMHO ziemlich gut.
 
Um die aktuelle Uhrzeit ausgeben zu können wird er time.h brauchen, wegen der Funktion time().

Und diese liefert ja schliesslich praktischerweise die Anzahl der Sekunden seit dem 1.1.1970. Also ein guter Input für die Sekundenmethode.

MfG

Arnd
 
Natürlich muss er dann noch eine Klasse schreiben :D
Oder siehst du irgendwo in der Struktur die Möglichkeit Daten einzugeben oder zu überprüfen ob die Daten gültig sind ?

Ohne die Struktur kann man eigentlich gar nichts machen. Ich würde aber auch nicht sagen dass sie ihm zu viel verrät.

Lucky Luke ich würde dir raten erst einmal ein bischen damit herum zu experimentieren und dann wenn du ein Problem hast noch mal nachfragen. Es nützt dir schließlich nichts wenn wir dir alles vorprogrammieren ( oder doch ? :p )
 
Zurück
Oben