Do tego co napisał @Oscar,
A jeśli chodzi o sedno - pomyliłeś warunki. Są pewne prawa logiki zdań (boolowskiej)
czyli, tu masz błędny zapis
if ((0>m)&&(m>=12))
i
if ((0>d)&&(d>=31))
do tego jeszcze raczej powinno być od 1 a nie od 0 (zera) i trzeba znak = też usuną bo 12 miesiąc istnieje i 31 dzień też w pewnym sensie istnieje (z pewnymi wyjątkami - ale to nie jest treścią zadania)
bo gdy poprawimy warunki, tylko
#include <iostream>
using namespace std;
int main()
{
int d,m;
cout << "Wpisz miesiac: ";
cin >> m;
cout << "Wpisz dzien: ";
cin >> d;
if(((d>0) && (d<=31)) && ((m>0) && (m<=12)))
cout << "Tak, to moze byc data";
else
{
if ((m<0) || (m>12))
cout << "Nie, miesiac jest spoza zakresu";
else
if ((d<0) || (d>31))
cout << "Nie, dzien jest spoza zakresu";
}
return 0;
}
to jak podamy
"nic" się nie dzieje.
No i ten else
if ((0>m)&&(m>=12))
cout<< "Nie, dzien jest spoza zakresu";
else
if ((0>d)&&(d>=31))
cout<< "Nie, miesiac jest spoza zakresu";
bo mogą być "spoza zakresu":
- dzień tak, miesiąc tak
- dzień tak, miesiąc nie
- dzień nie, miesiąc tak
czyli mogło by to wyglądać tak
przykład
#include <iostream>
using namespace std;
int main()
{
int d,m;
cout << "Wpisz miesiac: ";
cin >> m;
cout << "Wpisz dzien: ";
cin >> d;
if(((d>0) && (d<=31)) && ((m>0) && (m<=12)))
{
cout << "Tak, to moze byc data\n";
//Po numerze miesiąca sprawdź czy to pierwsze półrocze, czy drugie
if (... sam wpisz ...)
cout << "pierwsze polrocze\n";
else
cout << "drugie polrocze\n";
}
else
{
if ((m<1) || (m>12))
cout << "Nie, miesiac jest spoza zakresu\n";
if ((d<1) || (d>31))
cout << "Nie, dzien jest spoza zakresu\n";
}
return 0;
}
P.S.1. błąd jest jeszcze tu, m to miesiąc a jest
if ((0>m)&&(m>=12))
cout<< "Nie, dzien jest spoza zakresu";
to samo, d to dzień a jest
if ((0>d)&&(d>=31))
cout<< "Nie, miesiac jest spoza zakresu";
P.S.2 Jeżeli warunek if ma "przyjąć" wartość true to dla:
- liczb z zakresu używamy && ( and - i )
- liczb z poza zakresu używamy || ( or - lub )
czyli, np. mamy zakres 1..5