年月日を設定して、不正な日時の場合は1を返し、
正しい日時の場合は0を返し、次の日を表示するプログラムを作りたいので、
下のようなプログラムを作ったのですが、
上手く動作しないのですが、どこがだめなのでしょうか?
#include <iostream>
using namespace std;
class Date {
private:
int year;
int month;
int day;
public:
int set(int y, int m, int d) {}
void get() {}
void next() {}
};
int main()
{
Date d1;
int yy, mm, dd, y, m, d;
cin >> yy >> mm >> dd;
if (d1.set(yy, mm, dd) == 0) {
d1.get(y, m, d);
cout << yy << "年" << mm << "月" << dd << "日が設定されました" << endl;
d1.next();
d1.get(yy, mm, dd);
cout << "次の日は" << yy << "年" << mm << "月" << dd << "日です" << endl;
}
else {
cout << "正しく設定されていません" << endl;
}
return 0;
}
#include <iostream>
using namespace std;
class Date {
private:
int year;
int month;
int day;
public:
int set(int y, int m, int d) {
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 ) {
if(d<=31&&d>=1){
year=y;month=m;day=d;
return 0;
}
else return 1;
}
else if (m == 2) {
if(d<=28&&d>=1) {
year=y;month=m;day=d;
return 0;
}
else return 1;
}
else if (m == 4 || m == 6 || m == 9 || m == 11){
if(d<=30&&d>=1){
year=y;month=m;day=d;
return 0;
}
else return 1;
}
}
void get(int& y,int& m,int& d){
year=y;month=m;day=d;
}
void next() {
if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 )&& day== 31) {
month++;
day= 1;
}
else if (month == 12 && day == 31) {
year++;
month = 1;
day = 1;
}
else if (month == 2 && day == 28) {
month++;
day = 1;
}
else if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 30) {
month++;
day = 1;
}
else{
month++;
day++;
}
}
};
int main()
{
Date d1;
int yy, mm, dd, y, m, d;
cin >> yy >> mm >> dd;
if (d1.set(yy, mm, dd) == 0) {
d1.get(y, m, d);
cout << yy << "年" << mm << "月" << dd << "日が設定されました" << endl;
d1.next();
d1.get(yy, mm, dd);
cout << "次の日は" << yy << "年" << mm << "月" << dd << "日です" << endl;
}
else {
cout << "正しく設定されていません" << endl;
}
return 0;
}