[C++] Klasa dla daty

madden89
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 19 sty 2014, o 09:31
Płeć: Mężczyzna
Lokalizacja: Warszawa

[C++] Klasa dla daty

Post autor: madden89 »

witam. Piszę program do obsługi klasy Data. Mam z tym pewne problemy, a, że programuję od niedawna, pytam. Data ma byc wyświetlana w kilku formatach, napisałem konstruktor do liczbowej daty, chciałbym natomiast żeby była również z pisanym miesiącem, wiąże się z tym utworzenie nowego konstruktora z 'char' chociaż chciałem tego uniknąć i przez dziedziczenie to uzyskać. Chciałem również użyć funkcji wirtualnej do wydruku, ale przez ten nowy konstruktor jakoś tego nie widzę. Następna kwestia to wykonywanie operacji na datach, różnica dat, przesuwanie o d/m/r. Nie do końca wiem jak to zrobić dla różnych formatów, na pewno przeciążeniem operatora ale wówczas dla każdego rodzaju musi być inny. Również przeciążenie przesunięcia '<' musi się odbywać jak mi się zdaje dla d/m/r zależnie od wyboru żeby gdyż jak rozumiem więcej niż raz nie przeładuję. Za każdą wskazówkę będę bardzo wdzięczny. pozdrawiam.

Kod: Zaznacz cały

#include <iostream>
#include <cmath>

using namespace std;

class Data
{
private:
	int dzien;
	int miesiac;
	int rok;
public:

	Data ();			//konstruktor domniemanny

	Data ( const int &d, const int &m, const int &r);	//konstuktor par

	~Data ();

	void drukuj();

	int setdzien(const int &d);

	int getdzien();

	int setmiesiac(const int &m);
	int getmiesiac(const int &m);
	int setrok(const int &r);
	int getrok(const int &r);
};

Data::Data() : dzien(0), miesiac(0), rok(0)
{
}

Data::Data(const int &d, const int &m, const int &r) : dzien(d), miesiac(m), rok(r)
{
	cout << "konstr" << endl;
	//drukuj();
}

Data::~Data()
{
	cout << "destr" << endl;
}

void Data::drukuj()
{
	if(dzien!=0)
	{
	cout << " Drukuje date w formacie dd-mm-rrrr \n" ;

	cout.fill('0');
	cout.width(2);
	cout << dzien << "-";
	cout.fill('0');
	cout.width(2);
	cout << miesiac << "-";
	cout.fill(' ');
	cout.width(4);
	cout << rok << endl;
	}
}

int Data::setdzien(const int &d)
{
	//dzien = d;
	if(d<31)
	{
		dzien = d;
		return dzien;
	}
	else
	{
		dzien=0;
		cout << "bledna data!!" << endl;
		return 0;
	}
}

int Data::getdzien()
	{
		return dzien;
	}


int main ()
{

	Data data1;
	data1.setdzien(60);
	Data data2(data1.getdzien(), 5, 2020);
	data1.drukuj();
	
}
Ostatnio zmieniony 19 sty 2014, o 12:47 przez Afish, łącznie zmieniany 1 raz.
Powód: Nie podpinaj się pod cudze tematy.
ODPOWIEDZ