伊莉討論區

標題: 請幫忙用C++修改寫出完整的樂透號碼程式,要能夠排序大小 [打印本頁]

作者: 次元幻覺    時間: 2010-7-21 05:38 PM     標題: 請幫忙用C++修改寫出完整的樂透號碼程式,要能夠排序大小

提示: 作者被禁止或刪除 內容自動屏蔽
作者: trtc008056    時間: 2010-7-21 05:59 PM

本帖最後由 trtc008056 於 2010-7-21 06:01 PM 編輯

其實不太懂你的意思

所以我寫的是開獎器

這應該不會太難
花了5分鐘寫一寫

應該是不太會有錯誤

看不懂要問喔
  1. #include<iostream>
  2. #include<time.h>
  3. using namespace std;

  4. int main(){
  5.         int L_num[6];
  6.         int n,n_2;
  7.         int temp;
  8.         srand(time(NULL));
  9.         cout<<"產生六個號碼中...."<<endl;
  10.         for(n=0;n<6;n++){
  11.                 L_num[n] = (rand()%39)+1;
  12.                 for(n_2=0;n_2<n;n_2++){
  13.                         if(L_num[n] == L_num[n_2]){        n--;}
  14.                 }
  15.         }
  16.         for(n_2=0;n_2<6;n_2++){
  17.                 for(n=0;n<5;n++){
  18.                         if(L_num[n]>L_num[n+1]){
  19.                                 temp=L_num[n];
  20.                                 L_num[n]=L_num[n+1];
  21.                                 L_num[n+1]=temp;
  22.                         }
  23.                 }
  24.         }
  25.         cout<<"樂透號碼為:"<<endl;
  26.         for(n=0;n<6;n++){
  27.                 cout<<L_num[n]<<" ";

  28.         }
  29.                 cout<<endl;
  30.         system("PAUSE");
  31.         return 0;
  32. }
複製代碼

作者: 次元幻覺    時間: 2010-7-21 10:07 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: trtc008056    時間: 2010-7-21 11:59 PM

本帖最後由 trtc008056 於 2010-7-28 10:27 AM 編輯

這個是輸入六個數字,然後樂透開獎,最後對照
  1. #include<iostream>
  2. #include<time.h>
  3. using namespace std;

  4. int main(){
  5.         int counter=0;//計算中了幾碼
  6.         int Player_input[6];//玩家輸入
  7.         int L_num[6];//電腦開獎號碼
  8.         int n,n_2;//計數用
  9.         int temp;//暫存用
  10.         srand(time(NULL));
  11.         cout<<"請輸入六個號碼"<<endl;
  12.         for(n=0;n<6;n++){
  13.                 cin>>Player_input[n];
  14.                 for(n_2=0;n_2<n;n_2++){
  15.                         if(Player_input[n] == Player_input[n_2]){//檢查是否重複輸入
  16.                                 cout<<"重複輸入,請重新輸入!!"<<endl;;
  17.                                 n--;
  18.                         }
  19.                 }
  20.                 if(Player_input[n]<1 || Player_input[n]>39){
  21.                         cout<<"輸入數值錯誤,請輸入1~39之間任意數字!!"<<endl;//假查是否超出範圍
  22.                         n--;
  23.                 }
  24.         }
  25.         cout<<"產生六個號碼中...."<<endl;
  26.         for(n=0;n<6;n++){
  27.                 L_num[n] = ((unsigned int)rand()%39)+1;//亂數產生1~39號
  28.                 for(n_2=0;n_2<n;n_2++){//檢查是否重複
  29.                         if(L_num[n] == L_num[n_2]){        n--;}
  30.                 }
  31.         }
  32.         for(n_2=0;n_2<6;n_2++){//排大小,用汽泡排序(好像是叫做這個名子?)
  33.                 for(n=0;n<5;n++){
  34.                         if(L_num[n]>L_num[n+1]){
  35.                                 temp=L_num[n];
  36.                                 L_num[n]=L_num[n+1];
  37.                                 L_num[n+1]=temp;
  38.                         }
  39.                 }
  40.         }
  41.         cout<<"樂透號碼為:"<<endl;//開獎
  42.         for(n=0;n<6;n++){
  43.                 cout<<L_num[n]<<" ";
  44.         }
  45.         cout<<endl;

  46.         for(n_2=0;n_2<6;n_2++){//排出玩家的號碼大小
  47.                 for(n=0;n<5;n++){
  48.                         if(Player_input[n]>Player_input[n+1]){
  49.                                 temp=Player_input[n];
  50.                                 Player_input[n]=Player_input[n+1];
  51.                                 Player_input[n+1]=temp;
  52.                         }
  53.                 }
  54.         }
  55.         cout<<"你的號碼為:"<<endl;//玩家的號碼
  56.         for(n=0;n<6;n++){
  57.                 cout<<Player_input[n]<<" ";
  58.         }
  59.         for(n=0;n<6;n++){
  60.                 for(n_2=0;n_2<6;n_2++){
  61.                 if(Player_input[n] == L_num[n_2])//如果有相同的號碼,則中獎計數器加一
  62.                         counter++;
  63.                 }
  64.         }
  65.         cout<<"中了"<<counter<<"碼";
  66.                 cout<<endl;
  67.         system("PAUSE");
  68.         return 0;
  69. }
複製代碼

作者: kantan    時間: 2010-7-27 06:28 PM

上面大大寫的有一點小bug
我稍微改了一下^^"
最後的判斷相同號碼那是不是應該改成
  1. for(n=0;n<6;n++){
  2.                 for(n_2=0;n_2<6;n_2++){
  3.                 if(Player_input[n] == L_num[n_2])//如果有相同的號碼,則中獎計數器加一
  4.                         counter++;
  5.                 }
  6.         }
複製代碼
但真的樂透好像是號碼和順序都有相同才算中吧?
作者: trtc008056    時間: 2010-7-28 10:27 AM

回復 5# kantan

謝謝你幫我修正

我去台灣彩券查過,不需要順序一樣
作者: kantan    時間: 2010-7-28 11:10 AM

不客氣^^
我還以為要順序一樣呢
原來我一直搞錯了XD
作者: 銀幻    時間: 2010-7-28 01:24 PM

回復 4# trtc008056
這個是幹嘛用的??
  1. #include<time.h>
複製代碼

作者: trtc008056    時間: 2010-7-28 01:49 PM

  1. #include<time.h>
複製代碼
是一個跟時間有關的標頭檔
用在第11行
  1. srand(time(NULL));
複製代碼
time(NULL));是取得從1970年1月1日到今天累積的秒數
將他引入srand();時會產生亂數
以至於rand();被呼叫時會產生出不同的數字
應該是這樣把,如果沒記錯的話= =
請參考這一篇
http://www.cplusplus.com/reference/clibrary/cstdlib/srand/




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!