Помогите с задачей на С++
Описать тип TDate — структур с полями целого типа Day (день), Month (месяц) и Year (год). Описать функцию CheckDate(D) целого типа с параметром типа TDate, которая проверяет правильность даты, указанной в параметре D. Если дата D является правильной, то функция возвращает 0; если в дате указан неверный номер месяца, то функция возвращает 1; если в дате указан неверный день для данного месяца, то возвращается 2. Вывести значение функции CheckDate для пяти данных дат.


restIess: надо еще?
ShoxieV: Да
restIess: День/месяц/год должен быть в формате "01" или же "1" тоже будет удовлетворять условию?
ShoxieV: 1 тоже будет удовлетворять условию

Ответы

Ответ дал: Arkassssha
1

В функции CheckDate() присутствует все необходимые проверки правильности введенной даты.

Код программы:

#include <iostream>

#include <locale>

using namespace std;

struct TDate{

int Day;

int Month;

int Year;

};

int CheckDate(TDate D) {

if (D.Month < 1 || D.Month > 12)

 return 1;

if (D.Month % 2 == 1) {

 if (D.Month < 8) {

  if (D.Day < 1 || D.Day > 31)

   return 2;

 }

 else {

  if (D.Day < 1 || D.Day > 30)

   return 2;

 }

}

else{

 if (D.Month == 2) {

  if (D.Year % 4 == 0) {

   if (D.Day < 1 || D.Day > 29)

    return 2;

  }

  else {

   if (D.Day < 1 || D.Day > 28)

    return 2;

  }

 }

 else {

  if (D.Month >= 8) {

   if (D.Day < 1 || D.Day > 31)

    return 2;

  }

  else {

   if (D.Day < 1 || D.Day > 30)

    return 2;

  }

 }

}

return 0;

}

int main(void) {

TDate a = { 29, 2, 2035 },

 b = { 29, 2, 2036 },

 c = { 25, 12, 2056 },

 d = { 31, 11, 2001 },

 e = { 30, 4, 2004 },

 g = { 2, 13, 2000 };

cout << CheckDate(a) << endl;

cout << CheckDate(b) << endl;

cout << CheckDate(c) << endl;

cout << CheckDate(d) << endl;

cout << CheckDate(e) << endl;

cout << CheckDate(g) << endl;

}


ShoxieV: Спасибо большое, все отлично
Вас заинтересует