C/C++

Прошу помочь с С++!

#include <iostream>

using namespace std;

int main()

{
int a,b;
bool ap, bp;
cout<<"";
cin >> a;
cout<<"";
cin>> b;
switch(b)
{
case 1:
{
if (a>=1 && a<=31) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 2:
{
if (a>=1 and a<=29 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 3:
{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 4:
{
if (a>=1 and a<=30 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 5:

{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 6:
{
if (a>=1 and a<=30 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 7:
{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 8:
{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 9:
{
if (a>=1 and a<=30 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 10:
{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 11:
{
if (a>=1 and a<=30 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

case 12:
{
if (a>=1 and a<=31 ) ap = true, bp=true;
else ap = false, bp=false;
break;
}

}
if (ap && true)
{
cout<<"Все верно!";
}
else cout<<"Месяц введен не верно";

if (bp && true)
{
cout<<"Все верно!";
}
else cout<<"Дата введена не верно";

return 0;
}
Прошу подсобить и помочь подправить код, он должен соответсвовать требованиям в левой части
Паша Гахов
Паша Гахов
106
 #include  

using namespace std;

int main() {
setlocale(LC_ALL, "rus");
int date, month;
bool isDateOk = true, isMonthOk = true;
cin >> date >> month;
if (date < 1 || date > 31) isDateOk = false;
if (month < 1 || month > 12) isMonthOk = false;
else if (month == 2 && (date < 1 || date > 28)) isDateOk = false;
else if (month < 8 && (month & 1) && (date < 1 || date > 31)) isDateOk = false;
else if (month < 8 && !(month & 1) && (date < 1 || date > 30)) isDateOk = false;
else if ((month & 1) && (date < 1 || date > 30)) isDateOk = false;
else if (!(month & 1) && (date < 1 || date > 31)) isDateOk = false;
if(isDateOk && isMonthOk) cout
Рафаэль Минуллин
Рафаэль Минуллин
121
Лучший ответ
Паша Гахов я этот код училке блин не объясню, мне нужно просто мой код подправить
 #include  
using namespace std;
int main() {
int months[]{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int day, month;
cin >> day >> month;
auto m_month = month > 0 ? month < size(months) : false;
auto m_day = day > 0;
if (m_day) {
m_day = m_month ? day
Я бы вообще переписал с использованием массива.

 #include  
#include

const std::array dayCount = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31 };

int main() {
int month, day;
bool isDayOk, isMonthOk;

std::cin >> day;
std::cin >> month;

isMonthOk = (month > 0) && (month 0) && (day