Board logo

標題: C++ 日數計算問題 [打印本頁]

作者: stephen    時間: 2010-8-28 09:52     標題: C++ 日數計算問題

[attach]27[/attach]
作者: stephen    時間: 2010-8-28 09:53

程式碼 等 emma 寫出來後 再公布~
誰 敢上網 就 餵他喝 梅子膠水 + 雙倍梅子粉
作者: p17johnny    時間: 2010-8-28 09:56

XXX哪有這樣的阿ˋ_ˊ亨亨XXX
作者: p17johnny    時間: 2010-8-28 11:28

#include <iostream>
#include <cstdlib>
using namespace std;
int main(void){
   
    int year,month,day;
    cout<<"請依序輸入年 / 月 / 日"<<endl;
    cin>>year>>month>>day;
    cout<<"您輸入的日期是"<<year<<month<<day<<endl;
    int check ;
    check = ( year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1 : 0 ;
    int date = day ;
   
    switch ( month ) {
         case 12: date += 30;
         case 11: date += 31;
         case 10: date += 30;
         case 9: date += 31;
         case 8: date += 31;
         case 7: date += 30;
         case 6: date += 31;
         case 5: date += 30;
         case 4: date += 31;
         case 3: date += 29;
         case 2: date += 31;         
    }
   
    if( check == 1 && month >= 3 ) ++date ;
         
    cout << "是 " << year << " 年的第 " << date << " 天" << endl;  

   
    system("pause");
    return 0;
}
作者: chuangjoy    時間: 2010-8-28 11:29

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int y, m, d;
  5.     cout << "請輸入年月日" << endl;
  6.     cin >> y >> m >> d;
  7.    
  8.     switch(m){
  9.     case 12:
  10.           d = d + 334;
  11.     case 11:
  12.           d = d + 304;
  13.     case 10:
  14.           d = d + 273;
  15.     case 9:
  16.           d = d + 243;
  17.     case 8:
  18.           d = d + 212;
  19.     case 7:
  20.           d = d + 181;
  21.     case 6:
  22.           d = d + 151;
  23.     case 5:
  24.           d = d + 120;
  25.     case 4:
  26.           d = d + 90;
  27.     case 3:
  28.           d = d + 59;
  29.     case 2:
  30.           d = d + 31;
  31.     case 1:
  32.           d = d + 0;
  33.     break;
  34.     }
  35.     if(m > 2){
  36.         if(y % 4){
  37.              cout << d;
  38.         }else{
  39.               d = d + 1;
  40.               cout << d;
  41.         }
  42.     }else{
  43.           cout << d;
  44.     }
  45. system("pause");
  46. return 0;
  47. }
複製代碼

作者: Alen    時間: 2010-8-28 11:31

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){

  5.     start:
  6.     while (true){
  7.    
  8.     int year, month, day, a, b, c = 0; // a = 平年, b = 閏年, c = 總天數
  9.    
  10.     cout << "請輸入年月日 : ( 格式 : 年年年年  月月  日日   EX : 2010  08  28)" << endl;
  11.     cin >> year >> month >> day;
  12.    
  13.     if (year > 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31){
  14.    
  15.     /* 判斷某年是為閏年或平年 */
  16.     if (year%4==0){
  17.        if (year%100==0){
  18.           if (year%400==0){
  19.              b++;
  20.           }else{
  21.                  a++;
  22.           }
  23.        }else{
  24.              b++;
  25.        }
  26.     }else{
  27.            a++;
  28.     }
  29.      
  30.      cout << endl;
  31.      
  32.      if (a == 1 && month == 2 && day <= 29){
  33.         cout << "輸入無效數字!請重新輸入" << endl;
  34.         cout << endl;
  35.         goto start;        
  36.      }else if (b == 1 && month == 2 && day <= 28){
  37.               cout << "輸入無效數字!請重新輸入" << endl;
  38.               cout << endl;
  39.               goto start;  
  40.      }
  41.      /* 計算某月為幾日 */
  42.               
  43.        if (month == 1){
  44.           cout << day << endl;
  45.        }
  46.                 switch(month){
  47.                      case 2:
  48.                           c += 29 + 31;
  49.                           break;
  50.                      case 3:
  51.                           c += 60 + 31;
  52.                           break;
  53.                      case 4:
  54.                           c += 90 + 31;
  55.                           break;
  56.                      case 5:
  57.                           c += 121 + 31;
  58.                           break;
  59.                      case 6:
  60.                           c += 151 + 31;
  61.                           break;
  62.                      case 7:
  63.                           c += 182 + 31;
  64.                           break;
  65.                      case 8:
  66.                           c += 212 + 31;
  67.                           break;
  68.                      case 9:
  69.                           c += 242 + 31;
  70.                           break;
  71.                      case 10:
  72.                           c += 273 + 31;
  73.                           break;
  74.                      case 11:
  75.                           c += 303 + 31;
  76.                           break;
  77.                      case 12:
  78.                           c += 334 + 31;
  79.                           break;               
  80.                         
  81.                 }
  82.        if (b == 1 && a < 1){
  83.           cout << c + 1;      
  84.        }else{
  85.              cout << c;      
  86.        }cout << endl;
  87.       
  88.       
  89. }else{
  90.       cout << "輸入無效數字!請重新輸入" << endl;
  91.       cout << endl;     
  92. }
  93. }

  94.   
  95.    system("pause");
  96.    return 0;
  97. }
複製代碼
...喔!!!寫粉久咧!!
作者: b1081081    時間: 2010-8-28 11:32

#include <iostream>
#include <cstdlib>
using namespace std;
int main(void){

int year,month,day,n=0;
int md[11] = {31,28,31,30,31,30,31,31,30,31,30};
cin >> year >> month >> day;

if(year % 4 && month > 2){
n += 1;
}
if(month > 1){
for(int i = 0; i < month - 1; i++){
n += md[i];
}
cout << "第" << n + day << "天" << endl;
}else{
cout << "第" << day << "天" << endl;
}




system("pause");
return 0;
}
作者: b1081081    時間: 2010-8-28 11:33

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){

  5. int year,month,day,n=0;
  6. int md[11] = {31,28,31,30,31,30,31,31,30,31,30};
  7. cin >> year >> month >> day;

  8. if(year % 4 && month > 2){
  9. n += 1;
  10. }
  11. if(month > 1){
  12. for(int i = 0; i < month - 1; i++){
  13. n += md[i];
  14. }
  15. cout << "第" << n + day << "天" << endl;
  16. }else{
  17. cout << "第" << day << "天" << endl;
  18. }




  19. system("pause");
  20. return 0;
  21. }
複製代碼

作者: stephen    時間: 2010-8-28 11:35

回復 4# p17johnny


    陳譯仁抄網路上的答案,罰抄寫程式碼 100 遍
作者: stephen    時間: 2010-8-28 11:38

回復 5# chuangjoy


    雖然很糟 但是 還算認真
   嘉獎   
作者: stephen    時間: 2010-8-28 11:39

回復 6# Alen


    很細心 有創意
    嘉獎
作者: stephen    時間: 2010-8-28 11:42

回復 8# b1081081

這方法不錯
只是人太囂張了
以後不要再偷掀....................................
作者: guo.cane    時間: 2010-8-28 11:43

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){
  5.    
  6.     int year[3], day=0;
  7.    
  8.     cout << "請輸入民國年月日來計算天數" << endl;
  9.     cout << "民國年:";
  10.     cin >> year[0];
  11.     cout << "月:";
  12.     cin  >> year[1];
  13.     cout << "日:";
  14.     cin  >> year[2];
  15.    
  16.    
  17.     switch (year[1]){
  18.            case 1:
  19.                 day += 0;
  20.                 break;
  21.            case 2:
  22.                 day += 31;
  23.                 break;
  24.            case 3:
  25.                 day += 59;
  26.                 break;
  27.            case 4:
  28.                 day += 90;
  29.                 break;
  30.            case 5:
  31.                 day += 120;
  32.                 break;
  33.            case 6:
  34.                 day += 151;
  35.                 break;
  36.            case 7:
  37.                 day += 181;
  38.                 break;
  39.            case 8:
  40.                 day += 212;
  41.                 break;
  42.            case 9:
  43.                 day += 243;
  44.                 break;
  45.            case 10:
  46.                 day += 273;
  47.                 break;
  48.            case 11:
  49.                 day += 304;
  50.                 break;
  51.            case 12:
  52.                 day += 334;
  53.                 break;           
  54.     }
  55.     day += year[2];
  56.    
  57.     year[0]+=1911;
  58.     if (year[0]%400==0 && year[1]>2){
  59.        day++;            
  60.     }else if(year[0]%4==0 && year[0]%100!=0 && year[1]>2){
  61.           day++;      
  62.     }
  63.     cout << day << endl;
  64.    
  65.     system("pause");
  66.     return 0;
  67. }
複製代碼

作者: Alen    時間: 2010-8-28 22:19

老師:

這是最新版的程式碼,並附加上許多註解!!

上一個是錯誤的,有些東西會判斷錯誤!
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){
  5.     cout << "~歡迎來到日數計算系統~" << endl;
  6.    
  7.     start:  // 重新計算起始點
  8.     while (true){
  9.           int year, month, day, a, b, total = 0; // a = 平年, b = 閏年, total = 總天數
  10.          
  11.           cout << endl;
  12.           cout << "★_________________﹏__________________★" << endl;
  13.           cout << endl;
  14.           cout << "請輸入年月日 : ( 格式 : 年年年年  月月  日日   EX : 2010  08  28)" << endl;
  15.           cin >> year >> month >> day;
  16.    
  17.           /* 判斷輸入之數字是否為有效數字 */
  18.           if (year > 0){
  19.              if (month >= 1 && month <= 12){
  20.                 if (day >= 1 && day <= 31){   
  21.    
  22.           /* 判斷某年是為閏年或平年 */
  23.           if (year % 4 == 0){ // 判斷完成時,若為平年,a 為 1;若為閏年,b 為 1
  24.              if (year % 100 == 0){
  25.                 if (year % 400 == 0){
  26.                    b++;
  27.                 }else{
  28.                        a++;
  29.                 }
  30.              }else{
  31.                    b++;
  32.              }
  33.           }else{
  34.                  a++;
  35.           }
  36.          
  37.           cout << endl; // 輸出前先空一行
  38.      
  39.          /* 判斷月份若是 2月,輸入之天數是否為有效數字 */
  40.          if (a == 1 && month == 2 && day <= 29){
  41.             cout << "輸入無效數字!請重新輸入" << endl;
  42.             cout << endl;
  43.             goto start;        
  44.          }else if (b == 1 && month == 2 && day <= 28){
  45.                   cout << "輸入無效數字!請重新輸入" << endl;
  46.                   cout << endl;
  47.                   goto start;  
  48.          } // 若輸入數字為無效數字則提醒使用者並返回 start : 做重新輸入
  49.                      
  50.          /* 開始計算天數 */
  51.               
  52.               if (month == 1){
  53.               cout << day << endl;
  54.               }// 若月份為 1月,則直接輸出天(day)
  55.                
  56.                 switch(month){ // 使用判斷該月份為本年第幾天
  57.                      case 2:
  58.                           total += 29 + 31;  //加 31 是為補上 1月之天數
  59.                           break;
  60.                      case 3:
  61.                           total += 60 + 31;  
  62.                           break;
  63.                      case 4:
  64.                           total += 90 + 31;
  65.                           break;
  66.                      case 5:
  67.                           total += 121 + 31;
  68.                           break;
  69.                      case 6:
  70.                           total += 151 + 31;
  71.                           break;
  72.                      case 7:
  73.                           total += 182 + 31;
  74.                           break;
  75.                      case 8:
  76.                           total += 212 + 31;
  77.                           break;
  78.                      case 9:
  79.                           total += 242 + 31;
  80.                           break;
  81.                      case 10:
  82.                           total += 273 + 31;
  83.                           break;
  84.                      case 11:
  85.                           total += 303 + 31;
  86.                           break;
  87.                      case 12:
  88.                           total += 334 + 31;
  89.                           break;               
  90.                         
  91.                 }
  92.                
  93.                 /* 開始輸出天數 */
  94.                 if (b == 1 && total > 30){ // 若輸入之年為閏年時,天數則加 1。
  95.                    cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  96.                    cout << "第 " << total + 1 << " 天" << endl; //(天數相加需在60後(一月:30天 + 二月:29天))     
  97.                 }else{
  98.                       cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  99.                       cout << "第 " << total << " 天" << endl;      
  100.                 }cout << endl;
  101.       
  102.       
  103.        }else{ // (與本程式最前端同判斷式)若使用者之輸入資料不符合規定,則返回start : 重新輸入
  104.              cout << "輸入無效數字!請重新輸入" << endl;
  105.              goto start;
  106.              cout << endl;     
  107.        }
  108.       
  109.       }
  110.      }
  111.     }
  112.    system("pause");
  113.    return 0;
  114. }
複製代碼

作者: Alen    時間: 2010-8-29 11:53

最正確版:
  1. /* 日數計算問題 */

  2. #include <iostream>
  3. #include <cstdlib>
  4. using namespace std;
  5. int main(void){
  6.     cout << "~歡迎來到日數計算系統~" << endl;
  7.    
  8.     start:  // 重新計算起始點
  9.     while (true){
  10.           int year, month, day, a, b, total = 0; // a = 平年, b = 閏年, total = 總天數
  11.          
  12.           cout << endl;
  13.           cout << "★___________________________________★" << endl;
  14.           cout << endl;
  15.           cout << "請輸入年月日 : ( 格式 : 年年年年  月月  日日   EX : 2010  08  28)" << endl;
  16.           cin >> year >> month >> day;
  17.    
  18.           /* 判斷輸入之數字是否為有效數字 */
  19.           if (year > 0){
  20.              if (month >= 1 && month <= 12){
  21.                 if (day >= 1 && day <= 31){   
  22.    
  23.           /* 判斷某年是為閏年或平年 */
  24.           if (year % 4 == 0){ // 判斷完成時,若為平年,a 為 1;若為閏年,b 為 1
  25.              if (year % 100 == 0){
  26.                 if (year % 400 == 0){
  27.                    b++;
  28.                 }else{
  29.                        a++;
  30.                 }
  31.              }else{
  32.                    b++;
  33.              }
  34.           }else{
  35.                  a++;
  36.           }
  37.          
  38.           cout << endl; // 輸出前先空一行
  39.      
  40.          /* 判斷月份若是 2月,輸入之天數是否為有效數字 */
  41.          if (a == 1 && month == 2 && day <= 29){
  42.             cout << "輸入無效數字!請重新輸入" << endl;
  43.             cout << endl;
  44.             goto start;        
  45.          }else if (b == 1 && month == 2 && day <= 28){
  46.                   cout << "輸入無效數字!請重新輸入" << endl;
  47.                   cout << endl;
  48.                   goto start;  
  49.          } // 若輸入數字為無效數字則提醒使用者並返回 start : 做重新輸入
  50.                      
  51.          /* 開始計算天數 */
  52.               
  53.               if (month == 1){
  54.               cout << day << endl;
  55.               }// 若月份為 1月,則直接輸出天(day)
  56.                
  57.                 total = day;  // 將剩餘天數相加
  58.                 switch ( month ) {
  59.                                   case 12: total += 30;
  60.                                   case 11: total += 31;
  61.                                   case 10: total += 30;
  62.                                   case 9: total += 31;
  63.                                   case 8: total += 31;
  64.                                   case 7: total += 30;
  65.                                   case 6: total += 31;
  66.                                   case 5: total += 30;
  67.                                   case 4: total += 31;
  68.                                   case 3: total += 28;
  69.                                   case 2: total += 31;
  70.                 }
  71.                 /* 開始輸出天數 */
  72.                 if (b == 1 && total > 30){ // 若輸入之年為閏年時,天數則加 1。
  73.                    cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  74.                    cout << "第 " << total + 1 << " 天" << endl; //(天數相加需在60後(一月:30天 + 二月:29天))     
  75.                 }else{
  76.                       cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  77.                       cout << "第 " << total << " 天" << endl;      
  78.                 }cout << endl;
  79.       
  80.       
  81.        }else{ // (與本程式最前端同判斷式)若使用者之輸入資料不符合規定,則返回start : 重新輸入
  82.              cout << "輸入無效數字!請重新輸入" << endl;
  83.              goto start;
  84.              cout << endl;     
  85.        }
  86.       
  87.       }
  88.      }
  89.     }
  90.       

  91.   
  92.    system("pause");
  93.    return 0;
  94. }
複製代碼

作者: Alen    時間: 2010-8-29 21:55

最短程式+最正確版程式,最最最...版 YAYA!!
  1. /* 日數計算問題 */

  2. #include <iostream>
  3. #include <cstdlib>
  4. using namespace std;
  5. int main(void){
  6.     cout << "~歡迎來到日數計算系統~" << endl;
  7.    
  8.     start:  // 重新計算起始點
  9.     while (true){
  10.           int year, month, day, a, b, total = 0; // a = 平年, b = 閏年, total = 總天數
  11.          
  12.           cout << endl;
  13.           cout << "★___________________________________★" << endl;
  14.           cout << endl;
  15.           cout << "請輸入年月日 : ( 格式 : 年年年年  月月  日日   EX : 2010  08  28)" << endl;
  16.           cin >> year >> month >> day;
  17.    
  18.           /* 判斷輸入之數字是否為有效數字 */
  19.           if (year > 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31){  
  20.    
  21.           /* 判斷某年是為閏年或平年 */
  22.           if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0){ // 判斷完成時,若為平年,a 為 1;若為閏年,b 為 1
  23.              a++;
  24.           }else{
  25.                 b++;      
  26.           }
  27.          
  28.           cout << endl; // 輸出前先空一行
  29.      
  30.          /* 判斷月份若是 2月,輸入之天數是否為有效數字 */
  31.          if (a == 1 && month == 2 && day <= 29){
  32.             cout << "輸入無效數字!請重新輸入" << endl;
  33.             cout << endl;
  34.             goto start;        
  35.          }else if (b == 1 && month == 2 && day <= 28){
  36.                   cout << "輸入無效數字!請重新輸入" << endl;
  37.                   cout << endl;
  38.                   goto start;  
  39.          } // 若輸入數字為無效數字則提醒使用者並返回 start : 做重新輸入
  40.                      
  41.          /* 開始計算天數 */
  42.               
  43.               if (month == 1){
  44.               cout << day << endl;
  45.               }// 若月份為 1月,則直接輸出天(day)
  46.                
  47.                 total = day;  // 將剩餘天數相加
  48.                 switch ( month ) {
  49.                                   case 12: total += 30;
  50.                                   case 11: total += 31;
  51.                                   case 10: total += 30;
  52.                                   case 9: total += 31;
  53.                                   case 8: total += 31;
  54.                                   case 7: total += 30;
  55.                                   case 6: total += 31;
  56.                                   case 5: total += 30;
  57.                                   case 4: total += 31;
  58.                                   case 3: total += 28;
  59.                                   case 2: total += 31;
  60.                 }
  61.                
  62.                 /* 開始輸出天數 */
  63.                 if (b == 1 && total > 30){ // 若輸入之年為閏年時,天數則加 1。
  64.                    cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  65.                    cout << "第 " << total + 1 << " 天" << endl; //(天數相加需在60後(一月:30天 + 二月:29天))     
  66.                 }else{
  67.                       cout << year << "年 " << month << "月 " << day << "日 是 " << year << " 年 的   ";
  68.                       cout << "第 " << total << " 天" << endl;      
  69.                 }cout << endl;
  70.       
  71.        }else{ // (與本程式最前端同判斷式)若使用者之輸入資料不符合規定,則返回start : 重新輸入
  72.              cout << "輸入無效數字!請重新輸入" << endl;
  73.              cout << endl;
  74.              goto start;
  75.        }
  76. }   
  77.    system("pause");
  78.    return 0;
  79. }
複製代碼

作者: 小乖乖w    時間: 2011-7-9 02:28

很不错,值得鼓励,。。。













戒烟产品最好的戒烟产品最有效的戒烟产品哪种戒烟产品好




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2