已知某电视剧共有245集,分周一播2集,周二播3集,周四播1集,周日播2集,到从2002年5月3日开播,到今天应该播到多少集了?
注:如果是周三、五、六,那么应该注明不播。

解决方案 »

  1.   

    我的解决方案
    1)从网上肯定能够找到历史上那一天是星期几
    2)利用人的思维惯式可以一天天的计算出道某一天播放了多少集
    不过这肯定不是你想问的
    upup。
    thinking.........
      

  2.   

    zjkzyh(zyh):
    请用C描述出来!
      

  3.   


    抽象一下
    int week[9] = {0,  2, 3, 0, 1, 0, 0, 2 }; // 从周一到周日每天播放的集数
    int HowManyHaveDone(int nCount,        // 总共多少集
                        int nDays,         // 到截止日总共多少天
                        int nStart)        // 从周几开始计算
    {
       int nWholeWeek = 2 + 3 + 1 + 2;    // 整周播放多少集
       int nLeft = 7 - nStart + 1;        // 开始日所在周剩余几天(含本日)
       int nWeeks = (nDays - nLeft) / 7;  // 从下周一计算总共有多少个整周
       int nRet = nWeeks * nWholeWeek;    // 所有的整周播放的集数
       if (nRet >= nCount)
          return nCount;   // 不用这么多天就播完喽   下面把整周前后两段分别计算出来
       int nIndex = 0;
       for (nIndex = nStart; nIndex < 7; nIndex++)
       {
          nRet += week[nIndex];
       }
       if (nRet >= nCount)
          return nCount;   // 不用这么多天就播完喽   int nTail = (nDays - nLeft) % 7;    // 整周后面剩多少天(这肯定是从周一开始的) 
       for (nIndex = 1; nIndex < nTail; nIndex++)
       {
          nRet += week[nIndex];
       }   return nRet > nCount ? nCount : nRet;
    }
      

  4.   


    从某日开始到某日结束总共多少天,这可以抽象成另外一个接口函数。
    其实有现成的类可以用,就是mfc的CTimeCTime timeHead(1999, 3, 19, 0, 0, 0 ); //1999年3月19号
    CTime timeTail(2002, 3, 28, 0, 0, 0 ); //2002年3月28号
    CTime timeRet = timeTail - timeHead;   //结果就是总共几年几月几天
    //如果想折合成天数,那么再计算就容易了。CTime还可以返回这一天是星期几,copy一段代码吧
    UINT DayOfWeek[] = {
       LOCALE_SDAYNAME7,   // Sunday
       LOCALE_SDAYNAME1,   
       LOCALE_SDAYNAME2,
       LOCALE_SDAYNAME3,
       LOCALE_SDAYNAME4, 
       LOCALE_SDAYNAME5, 
       LOCALE_SDAYNAME6   // Saturday
    };TCHAR strWeekday[256];
    CTime time(CTime::GetCurrentTime());   // Initialize CTime with current time
    ::GetLocaleInfo(LOCALE_USER_DEFAULT,   // Get string for day of the week from system
       DayOfWeek[time.GetDayOfWeek()-1],   // Get day of week from CTime
       strWeekday, sizeof(strWeekday));TRACE("%s\n", strWeekday);               // Print out day of the week
      

  5.   

    先算出2002/5/3星期几(CTime::GetDayOfWeek)比如星期2,
    然后算到今天共过了多少整周(CTimeSpan::GetDay()/7),
    每周8集,乘以8,
    再算今天星期几(比如星期五),
    然后根据你所说的算星期二到星期五共放了几集,
    加起来就ok
      

  6.   

    函数的 nStart 变量什么意思?上面的说明我弄错了,应该是5月2日
      

  7.   

    char c[ 100 ];
    CTime t( 2002,5,3,0,0,0);
    CTime today = CTime::GetCurrentTime();
    int cur = 0; while( t < today )
    {
    switch( t.GetDayOfWeek() )
    {
    case 1:
    cur += 2;
    break;
    case 2:
    cur += 4;
    break;
    case 4:
    cur += 1;
    break;;
    case 7:
    cur += 2;
    break;
    }
    t += ( 24 * 60 * 60 );
    if( cur > 245 )
    {
    AfxMessageBox( "over" );
    return;
    }
    }
    sprintf( c, "%d", cur );
    AfxMessageBox( c );
    环境 xp .net
      

  8.   

    char c[ 100 ];
    CTime t( 2002,5,3,0,0,0);
    CTime today = CTime::GetCurrentTime();
    int cur = 0; while( t <= today )
    {
    switch( t.GetDayOfWeek() )
    {
    case 1:
    cur += 2;
    break;
    case 2:
    cur += 4;
    break;
    case 4:
    cur += 1;
    break;;
    case 7:
    cur += 2;
    break;
    }
    t += ( 24 * 60 * 60 );
    if( cur > 245 )
    {
    AfxMessageBox( "over" );
    return;
    }
    }
    sprintf( c, "%d", cur );
    AfxMessageBox( c );
    已经播出171集啦
      

  9.   


    参数说明
    int HowManyHaveDone(int nCount,        // 总共多少集
                        int nDays,         // 到截止日总共多少天
                        int nStart)        // 从周几开始计算,周一是1,周七是7,依此类推这个函数的实现思路其实跟siphonelee(sifone)说的一样,嘿嘿
      

  10.   

    楼上的,那就应该是从周二开始计算的?
    调用参数是 howmanyhavedone( 245,**,2 ) ???