- 论坛徽章:
- 0
|
这是个大年数与小年数日期相隔天数的算法,并且输出那日期的星期数,就在星期数那里出问题了,/*.....*/之间有问题,谢谢哪位高手帮忙看一下,指教指教偶
#include<iostream>
using namespace std;
struct Date{
int y;
int m;
int d;
};
int max( int y, int m );
Date input( );
int day( Date r1, Date r2 );
int week( Date r );
int max( int y,int m )
{
if( m == 4 || m == 6 || m == 9 || m == 11 )
return 30;
else if( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 )
return 31;
else if( m == 2 )
return ( y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 29 : 28 );
}
Date input( )
{
Date r;
do{
cout << "input date :";
cin >> r.y >> r.m >> r.d;
}while( r.m > 12 || r.m < 1 || r.d < 1 || r.d > max ( r.y, r.m ) );
return r;
}
int day( Date r1, Date r2 )
{
int days = 0;
int i;
if( r1.y == r2.y )
{
for( i = r2.m + 1; i < r1.m; i++ )
days += max( r1.y, i );
days += r1.d;
days += max( r2.y, r2.m ) - r2.d;
}
else
{
for( i = r2.y + 1; i < r1.y; i++ )
{
if( i % 4 == 0 && i % 100 !=0 || i % 400 == 0 )
days += 366;
else days += 365;
}
for( i = 1; i < r1.m; i++ )
days += max( r1.y, i );
days += r1.d;
for( i = r2.m +1; i <= 12; i++ )
days += max( r2.y, i );
days += max( r2.y, r2.m ) - r2.d;
}
return days;
}
int week( Date r )
{
int days;
Date r1 = { 2008, 3, 16 };
cout << r.y << r.m << r.d << endl;
cout << r1.y << r1.m << r1.d << endl << endl;
Date r2;
Date R = r;
cout << R.y << R.m << R.d << endl;
/* if( r.y >= r1.y && r.m >= r1.m && r.d > r1.d )
{
r2 = r1;
r1 = R;
R = r2;
}
cout << "day :" << r1.y << '' << r1.m << '' << r1.d << endl;
cout << "biao zhun :" << R.y << '' << R.m << '' << R.d << endl;
cout << " DAY :" << days << endl;
if( days % 7 == 0 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Sun. .\n";
else if( days % 7 == 1 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Mon. .\n";
else if( days % 7 == 2 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Tues. .\n";
else if( days % 7 == 3 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Wed. .\n";
else if( days % 7 == 4 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Thur. .\n";
else if( days % 7 == 5 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Fri. .\n";
else if( days % 7 == 6 )cout << " That day "<< r.y << ' ' << r.m << ' ' << r.d << "is Sat. .\n";*/
return 0;
}
int main( )
{
Date r1;
Date r2;
int days;
r1 = input( );
r2 = input( );
days = day( r1, r2 );
cout << " There are " << days << " in the two days . \n";
week( r1 );
week( r2 );
return 0;
} |
|