参数问题?至少我认为是这样
Parameter issue? at least i think it is
#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
class Date
{
private:
int year;
int monthNum;
int dayNum;
public:
Date(int newYear = 1900, int newMonth = 1, int newDay = 1);
void SetDate(int ChangeYear, int ChangeMonth, int ChangeDay);
void DisplayNumerically();
void DisplayTextually();
};
int main()
{
调用 setDate 和参数时如何做到这一点不正确,它返回它试图更改的日期
Date f(1980, 6, 8);
f.DisplayNumerically(); /// prints "06/08/1980"
f.DisplayTextually(); /// prints "June 8, 1980"
f.SetDate(1980, 6, 31); /// prints "Error: SetDate() called with invalid date information"
f.DisplayNumerically(); /// prints "06/08/1980"
f.DisplayTextually(); /// prints "June 8, 1980"*
此部分就在上面。
return 0;
}
Date::Date(int newYear, int newMonth, int newDay)
{
year = newYear;
monthNum = newMonth;
dayNum = newDay;
if(newDay > 30)
{
cout <<"Error: Date created with invalid date information."<<endl;
year = 1900;
monthNum = 1;
dayNum = 1;
}
}
void Date::SetDate(int ChangeYear, int ChangeMonth, int ChangeDay)
{
year = ChangeYear;
monthNum = ChangeMonth;
dayNum = ChangeDay;
if(ChangeMonth > 12||ChangeDay > 30)
{
cout <<"Error: SetDate() called with invalid date information."<<endl;
year=1;
monthNum=1;
dayNum=1;
}
}
void Date::DisplayNumerically()
{
printf("%02d",monthNum);
printf("/%02d",dayNum);
printf("/%04dn",year);
}
void Date::DisplayTextually()
{
string m;
if( monthNum == 1)
m = "January";
else if( monthNum == 2)
m = "February";
else if( monthNum == 3)
m = "March";
else if( monthNum == 4)
m = "April";
else if( monthNum == 5)
m = "May";
else if( monthNum == 6)
m = "June";
else if( monthNum == 7)
m = "July";
else if( monthNum == 8)
m = "August";
else if( monthNum == 9)
m = "September";
else if( monthNum == 10)
m = "October";
else if( monthNum == 11)
m = "November";
else if( monthNum == 12)
m = "December";
else
cout <<"Invalid month input: "<< monthNum << endl;
cout << m <<" "<<fixed<<setprecision(2)<<dayNum<<","<<year<<endl;
}
只是不要修改输入错误的日期:
void Date::SetDate(int ChangeYear, int ChangeMonth, int ChangeDay)
{
if(ChangeMonth > 12||ChangeDay > 30)
{
cout <<"Error: SetDate() called with invalid date information."<<endl;
}
else
{
year = ChangeYear;
monthNum = ChangeMonth;
dayNum = ChangeDay;
}
}
(我假设您的有效性检查仅用于说明目的。
相关文章:
- 为什么rand()的使用被认为是不好的
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 发生此错误:在0x0F2BFB7C(基于.dll)时引发异常 尝试更改大小是问题吗?
- 一个C头文件可以被认为是一个接口吗
- 为什么const char*和const char[]作为函数参数被认为是等价的
- 为什么12.0==11.999999999999999999被认为是真的
- 这会被认为是糟糕的编程实践吗?
- 为什么这被认为是恒定的?
- 抽象类/接口中的空方法是否被认为是一种好的做法?
- 如果我具有调用其其他实例之一的超载函数,它是否被认为是递归功能
- std::unique_ptr可以被认为是一个monad吗?
- C++ 指向类的指针和/或引用是否被认为是"movable"?
- 使用自定义宏来简化 cin 和 cout 语句等内容被认为是更好还是更差
- 使用成员函数更改对象或返回并分配它是否被认为是更好的做法?
- 我很难修复我认为是双重免费的东西
- 使用 #define 被认为是"bad practice"吗?
- 是一个被认为是不同类型的班级内部的正向声明
- C++ 标准::字符串意外更改。我认为这个问题是关于深和浅拷贝的
- 参数问题?至少我认为是这样
- 逗号分隔的语句被认为是完整的语句吗?(以及其他诊断问题)