免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1284 | 回复: 1
打印 上一主题 下一主题

[C++] 谁可以帮帮我 谢谢了~~~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-14 19:28 |只看该作者 |倒序浏览

这是个大年数与小年数日期相隔天数的算法,并且输出那日期的星期数,就在星期数那里出问题了,/*.....*/之间有问题,谢谢哪位高手帮忙看一下,指教指教偶
#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;
}

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2008-03-14 20:45 |只看该作者
这种问题唯一的解决方法是自己调通
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP