ja klar… hoffentlich wird das kein 10 seiten text
viel spaß beim studieren
lg Enrico
Datum.h
#ifndef \_DATUM\_
#define \_DATUM\_
#include
#include
using namespace std;
class Datum
{
private:
int tg,mn,jr;
bool isLeapyear(int);
int maxDays(int mn,int jr);
public:
Datum();
Datum(int tg, int mn, int jr);
int getDay() const {return tg;}
int getMonth() const {return mn;}
int getYear() const {return jr;}
const string& getDate() const;
bool setDay(int tg);
bool setMonth(int mn);
bool setYear(int jr);
bool setDate(int tg,int mn, int jr);
bool isLeapyear();
Datum& operator =(const Datum& d);
Datum& operator +=(const Datum& d);
Datum& operator +=(const int d);
Datum& operator -=(const int d);
Datum& operator -=(const Datum& d);
Datum& operator +(const Datum& d);
Datum& operator +(const int d);
Datum& operator -(const int d);
Datum& operator -(const Datum& d);
bool operator ==(const Datum& d) const;
bool operator (const Datum& d) const;
Datum& operator ++();
Datum& operator --();
Datum operator ++(int);
Datum operator --(int);
void setNow();
};
ostream& operator
datum.cpp
// Datum.cpp
#include
#include
#include
#include
#include
#include "datum.h"
using namespace std;
//Private function
bool Datum::isLeapyear(int jr)
{
if (!(jr % 4) && (jr % 100))
return true;
if (!(jr % 400))
return true;
return false;
}
int Datum::maxDays(int mn,int jr)
{
switch(mn)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 2:
if (isLeapyear(jr))
return 28;
else
return 29;
break;
default:
return 30;
}
}
// Public Function
Datum::smiley:atum()
{
tg = 1;
mn = 1;
jr = 2008;
}
Datum::smiley:atum(int tg, int mn, int jr)
{
if(!(setDate(tg,mn,jr)))
{
this-\>tg = 1;
this-\>mn = 1;
this-\>jr = 2008;
}
}
const string& Datum::getDate() const
{
static string date;
stringstream iostream;
iostream \> date;
return date;
}
bool Datum::setDay(int tg)
{
if ((tg 0))
{
this-\>tg = tg;
return true;
}
else
return false;
}
bool Datum::setMonth(int mn)
{
if ((tg 0))
{
this-\>mn = mn;
return true;
}
else
return false;
}
bool Datum::setYear(int jr)
{
if ((tg 0))
{
this-\>jr = jr;
return true;
}
else
return false;
}
bool Datum::setDate(int tg,int mn, int jr)
{
if (tg0)&& mn \>=1 && mn 0)
{
this-\>tg = tg;
this-\>mn=mn;
this-\>jr=jr;
return true;
}
else
return false;
}
bool Datum::isLeapyear()
{
if (!(jr % 4) && (jr % 100))
return true;
if (!(jr % 400))
return true;
return false;
}
Datum& Datum::operator =(const Datum& d)
{
tg = d.getDay();
mn = d.getMonth();
jr = d.getYear();
return \*this;
}
Datum& Datum::operator +=(const Datum& d)
{
if (d.getDay()+tg \> maxDays(mn,jr))
{
tg = (d.getDay() + tg)- maxDays(mn,jr);
mn = mn+1;
}
else
tg=tg+d.getDay();
return \*this;
}
Datum& Datum::operator +=(const int d)
{
if (d+tg \> maxDays(mn,jr))
{
tg = (d+ tg)- maxDays(mn,jr);
mn = mn+1;
}
else
tg=tg+d;
return \*this;
}
Datum& Datum::operator -=(const int d)
{
if (tg-d maxDays(mn,jr))
{
tg = (d.getDay() + tg)- maxDays(mn,jr);
mn = mn+1;
}
else
tg=tg+d.getDay();
return \*this;
}
Datum& Datum::operator +(const int d)
{
if (d+tg \> maxDays(mn,jr))
{
tg = (d+ tg)- maxDays(mn,jr);
mn = mn+1;
}
else
tg=tg+d;
return \*this;
}
Datum& Datum::operator -(const int d)
{
if (tg-d d.getYear())
return false;
if (mn d.getMonth())
return false;
if (tg (const Datum& d) const
{
if (jr \> d.getYear())
return true;
if (jr d.getMonth())
return true;
if (mn d.getDay())
return true;
return false;
}
Datum& Datum::operator ++()
{
if (1+tg \> maxDays(mn,jr))
{
tg = (++tg)- maxDays(mn,jr);
++mn;
}
else
++tg;
return \*this;
}
Datum& Datum::operator --()
{
if ((tg-1) tm\_mday;
mn = zeit-\>tm\_mon+1;
jr = zeit-\>tm\_year+1900;
}
ostream& operator
> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>