Kod: Zaznacz cały
#include <iostream>
#include <cstdlib>
//using namespace std;
struct Data
{
int dzien_;
int miesiac_;
int rok_;
};
void podanie_daty(Data a);
void poprawna_data(int dzien, int miesiac, int rok);
bool TaSama (Data a, Data b);
int main()
{
Data pierwsza_data, druga_data;
podanie_daty(pierwsza_data);
podanie_daty(druga_data);
std::cout << pierwsza_data.dzien_ << " " << pierwsza_data.miesiac_ << " " << pierwsza_data.rok_<< " " <<
druga_data.dzien_ << " " << druga_data.miesiac_ << " " << druga_data.rok_ <<std::endl;
poprawna_data(pierwsza_data.dzien_, pierwsza_data.miesiac_, pierwsza_data.rok_ );
poprawna_data(druga_data.dzien_, druga_data.miesiac_, druga_data.rok_ );
std::cout << TaSama(pierwsza_data, druga_data);
return EXIT_SUCCESS;
}
void podanie_daty(Data a)
{
std::cout << "Podaj dzien: ";
if(!(std::cin >> a.dzien_))
{
std::cout << "Nie podales liczby!";
exit(0);
}
std::cout << "Podaj miesiac: ";
if(!(std::cin >> a.miesiac_))
{
std::cout << "Nie podales liczby!";
exit(0);
}
std::cout << "Podaj rok: ";
if(!(std::cin >> a.rok_))
{
std::cout << "Nie podales liczby!";
exit(0);
}
}
void poprawna_data(int dzien, int miesiac, int rok)
{
if( miesiac < 0 || dzien < 0 )
{
std::cout <<"Podales ujemny miesiac lub dzien!";
exit(0);
}
if(miesiac>12)
{
std::cout << "Nie ma wiecej niz 12-stu miesiecy";
exit(0);
}
if((rok == 1582 && miesiac == 10 && dzien<4) || rok<1582 || (rok == 1582 && miesiac < 10 ))
{
std::cout<< "Kalendarz gregorianski obowiazuje od 4 pazdziernika 1582 roku!";
exit(0);
}
if( (miesiac == 1 || miesiac == 3 || miesiac == 5 || miesiac == 7 || miesiac == 8 || miesiac == 10 || miesiac == 12 ) && dzien > 31)
{
std::cout << "W podanym przez Cb miesiacu nie ma wiecej niz 31 dni";
exit(0);
}
if( (miesiac == 4 || miesiac == 6 || miesiac == 9 || miesiac == 11 ) && dzien > 31)
{
std::cout << "W podanym przez Cb miesiacu nie ma wiecej niz 30 dni";
exit(0);
}
if(((( rok%4 == 0) && (rok % 100 != 0)) || (rok % 400 == 0)) && dzien>29 && miesiac == 2 )
{
std::cout << "W roku przestepnym w lutym jest tylko 29 dni";
exit(0);
}
if(((( rok%4 != 0) && (rok % 100 != 0)) || (rok % 400 != 0)) && dzien>28 && miesiac == 2 )
{
std::cout << "W roku nieprzestepnym w lutym jest tylko 28 dni";
exit(0);
}
}
bool TaSama (Data a, Data b)
{
if( a.rok_ != b.rok_ ) return false;
if( a.miesiac_ != b.miesiac_ ) return false;
if( a.dzien_ != b.dzien_ ) return false;
return true;
}
void podanie_daty(Data a); to w tych zmiennych siedzą liczby z kosmosu, wie ktoś co robię źle? (26/27 linijka- sprawdzam co funkcja przypisała do tych zmiennych)-- 23 maja 2016, o 17:14 --Problem rozwiązany.