任何帮助使这个代码更小的C++
用于程序输入用户日/月/年,然后输入valdite 如果输入日期<1,则应将输入日期更正为1天,并且 如果d>30,则日期为天=30,如果输入,则用户月份应介于1和12之间,也应介于2000和2015年之间 我需要使我的代码更小,特别是缩短功能的纠正 我做了三个功能:一个用于打印输入 第二种方法用于校正数据 第三个是用户的输入 这是我的密码:任何帮助使这个代码更小的C++,c++,c++11,visual-c++,dev-c++,C++,C++11,Visual C++,Dev C++,用于程序输入用户日/月/年,然后输入valdite 如果输入日期30,则日期为天=30,如果输入,则用户月份应介于1和12之间,也应介于2000和2015年之间 我需要使我的代码更小,特别是缩短功能的纠正 我做了三个功能:一个用于打印输入 第二种方法用于校正数据 第三个是用户的输入 这是我的密码: #include<iostream> using namespace std ; void print24(int &d , int &m, int &y);
#include<iostream>
using namespace std ;
void print24(int &d , int &m, int &y);
bool valid (int &d , int &m , int & y);
void corrected (int & d , int & m , int & y);
int main()
{
int day , month , year ;
cout<<"Enter Date between 1/1//2000 to 30/12//2014 in format <D M Y>" << endl ;
cin>>day>>month>>year ;
cout<<"Date Entered : ";
print24(day ,month , year);
cout<<endl ;
if(valid( day , month , year))
{
cout<<"You Entered Valid Date :";
print24(day ,month , year);
}
else
{
cout<<endl<<"You Entered inValid Date ! "<<endl;
cout<<"Corrected Date is : ";
corrected (day , month , year);
}
}
void print24(int &d , int &m , int & y)
{
cout<<d<<"/"<<m<<"/"<<y;
}
bool valid (int &d , int &m , int & y)
{
if (d<=30 && d >=1 && m <=12 && m>=1 && y>=2000 && y<=2015)
return true ;
else
return false ;
}
void corrected (int &d , int &m , int &y)
{
if(d<1)
{
d=1 ;
if(m<1)
{
m=1;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else if(m>12)
{
m=12 ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else
{
m=m ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
}
///////////////////////////////////////////////////////////////////////////////////////
else if(d>30)
{
d=30 ;
if(m<1)
{
m=1;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else if(m>12)
{
m=12 ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else
{
m=m ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
}
///////////////////////////////////////////////////////////////////////////////////
else
{
d=d ;
if(m<1)
{
m=1;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else if(m>12)
{
m=12 ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
else
{
m=m ;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
}
}
这里是问题:
编写一个函数,接受日、月和年的整数值,并以有效格式返回它们。如果day大于30,则将day转换为30。如果月份高于12,则将月份转换为12。同样,如果日或月小于1,则将其转换为1。最后,它确保年份介于2000年和2015年之间。如果所有输入都有效,则返回true,否则返回false。编写一个程序,提示用户输入日期、月份和年份。然后,程序使用上面编写的函数对其进行验证,如果所有输入都有效,则显示validate。否则,程序将显示函数返回的无效输入值和更正的输入值。使用参考传递法。例如,此方法可以简化:
bool valid (int &d , int &m , int & y)
{
if (d<=30 && d >=1 && m <=12 && m>=1 && y>=2000 && y<=2015)
return true ;
else
return false ;
}
致:
该块的第二个示例是:
m=1;
if(y<2000)
{
y=2000;
print24(d ,m , y);
}
else if(y>2015)
{
y=2015 ;
print24(d ,m , y);
}
else
{
y=y ;
print24(d ,m , y);
}
}
这可以简化如下:
m=1;
if(y<2000)
{
y=2000;
}
else if(y>2015)
{
y=2015;
}
print24(d, m, y);
}
使您的功能如下所示:
if(d<1 || d>31) // if d less then 1 OR greater than 31
{
d = d<1 ? 1:31; // if d<1, d will become 1 else 31
}
if(m<1 || M>12) // if m less then 1 OR greater than 12
{
m = m<1 ? 1:12; // if m<1, m will become 1 else 12
}
if(y<2000 || y>2015) // if y less then 2000 OR greater than 2015
{
y = y<2000 ? 2000:2015; // if y<2000, y will become 2000 else 2015
}
print24(d ,m , y);
我认为这更适合。如果整数没有被函数修改,就不要通过引用传递它们。
if(d<1 || d>31) // if d less then 1 OR greater than 31
{
d = d<1 ? 1:31; // if d<1, d will become 1 else 31
}
if(m<1 || M>12) // if m less then 1 OR greater than 12
{
m = m<1 ? 1:12; // if m<1, m will become 1 else 12
}
if(y<2000 || y>2015) // if y less then 2000 OR greater than 2015
{
y = y<2000 ? 2000:2015; // if y<2000, y will become 2000 else 2015
}
print24(d ,m , y);