我是giggleman 2016-04-28 07:34 采纳率: 0%
浏览 1216

各位大神帮忙看看哪里写错了,修改下谢谢 C++ 入门

================================================
dateType.h
================================================
#include
using namespace std;
class dateType {
private:
int year, month, day;
public:
void setDate(int month, int day, int year);
void setMonth(int month);
void setDay(int day);
void setYear(int year);
void print();
int numberOfDaysPassed();
int numberOfDaysLeft();
void incrementDays(int num);
int getMonth();
int getYear();
int getDay();
int getDaysInMonth();
int getDaysInMonth(int month);
bool isLeapYear();
dateType(int = 1, int = 1, int = 1900);
~dateType() {}
};

================================================
dateTypelmp.cpp
================================================
#include "dateType.h"

void dateType::setDate(int _month, int _day, int _year) {
year = _year;
month = _month;
day = _day;
}
dateType::dateType(int _month, int _day, int _year) {
year = _year;
month = _month;
day = _day;
}
void dateType::setMonth(int _month) {
month = _month;
}

void dateType::setDay(int _day) {
day = _day;
}

void dateType::setYear(int _year) {
year = _year;
}

void dateType::incrementDays(int num) {
int leftDays = numberOfDaysLeft();
while (num>leftDays) {
year++;
num -= leftDays;
leftDays = numberOfDaysLeft();
month = 1;
day = 0;
}

while (num>(getDaysInMonth() - day)) {

    num -= (getDaysInMonth() - day);
    month++;
    day = 0;
}
day += num;

}
int dateType::getDaysInMonth() {
return getDaysInMonth(month);
}
int dateType::getDaysInMonth(int _month) {
int days = 31;
switch (_month) {
case 2:
if (isLeapYear()) {
days = 29;
}
else {
days = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
}
return days;
}
bool dateType::isLeapYear() {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int dateType::getYear() {
return year;
}
int dateType::getMonth() {
return month;
}
int dateType::getDay() {
return day;
}
void dateType::print() {
cout << "date=" << month << "-" << day << "-" << year << endl;
}

int dateType::numberOfDaysPassed() {

int passedDays = 0;
for (int i = 1; i<month; i++) {
    passedDays += getDaysInMonth(i);
}
passedDays += day;
return passedDays;

}

int dateType::numberOfDaysLeft() {
int years = 365;
if (isLeapYear()) {
years = 366;
}
return years - numberOfDaysPassed();
}

int main(void)
{
dateType date1(3, 15, 2008);
date1.print();
date1.setDate(10, 10, 2010);
date1.print();

date1.setMonth(12);
date1.setDay(12);
date1.setYear(2012);
date1.print();

cout << "Elapesed Days since 1/1/2012 = " << date1.numberOfDaysPassed() << endl
    << "Days remaining in 2012 = " << date1.numberOfDaysLeft() << endl;
date1.incrementDays(378);
cout << date1.getMonth() << "/"
    << date1.getDay() << "/"
    << date1.getYear() << "/\n";
cout << "there are " << date1.getDaysInMonth() << " in this month\n"
    << "and this year " << (date1.isLeapYear() ? "is" : "is not ") << "a leap year\n";
cin.get();

system("pause");
return 0;

}

  • 写回答

4条回答

  • 我是giggleman 2016-04-28 07:35
    关注

    这个是我运行后的图片说明

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能