找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限使用任何功能尊貴會員無限下載附件認識好友、聊天,分享生活趣事
神奇寶貝無碼流出ge幼女鬼滅之刃adobephotosho
mg修真世界jyma 048淫蕩小侄waifu acfc2冰河末世

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

黑人男子拒絕出示駕照

高雄苓雅復興二路與四

[繁]蔚藍檔案06-

[繁]從Lv2開始開外掛

[繁]轉生為第七王子,

[簡]狼與辛香料 Merch
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2178|回復: 4
打印上一主題下一主題

[作業]1A2b的設計問題[複製鏈接]

Rank: 1

帖子
99
積分
188 點
潛水值
24281 米
跳轉到指定樓層
樓主
發表於 2016-12-2 05:20 AM|只看該作者|倒序瀏覽
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
請大家幫幫忙,學生要做科展,但想要將內容用電腦呈現,他們想要做7個數字的1A2B,但又多了兩個條件,也就是左邊正確就是C,右邊正確就是D,但第一個只能判斷右邊與第七個只能判斷左邊,請大家幫幫忙,要如何寫,謝謝大家
分享分享0收藏收藏0支持支持0
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 1

帖子
9
積分
31 點
潛水值
19650 米
頭香
發表於 2016-12-2 09:44 AM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
本帖最後由 kiwis 於 2016-12-2 09:52 AM 編輯

最簡單的就是跑兩個迴圈整串下去測吧。
  1. int max_length(7);

  2. void check(char* answer, char* user_input)
  3. {
  4.         unsigned char A(0);
  5.         unsigned char B(0);
  6.         unsigned char C(0);
  7.         unsigned char D(0);

  8.         for(int i(0); i<max_length; ++i)
  9.         {
  10.                 for(int j(0); j<max_length; ++j)
  11.                 {
  12.                         if(user_input[j] == answer[i])
  13.                         {
  14.                                 if(i==j)
  15.                                 {
  16.                                         A++;
  17.                                         break;
  18.                                 }
  19.                                 if(i!=j)
  20.                                         B++;
  21.                                 if(i>j)
  22.                                 {
  23.                                         C++;
  24.                                         break;
  25.                                 }
  26.                                 if(i<j)
  27.                                 {
  28.                                         D++;
  29.                                         break;
  30.                                 }
  31.                         }
  32.                 }
  33.         }
  34.         // 把 A B C D 印出來或看要做甚麼處理
  35. }
複製代碼
要注意的地方:
1. 電腦產生的答案假設已經做好了(隨機產生7個數字,不重複)
2. 玩家輸入已經處理完成(不重複的一串7個數字)
3. 輸入為字串模式
4. 沒做任何檢查,這個讓各位自己做 : p

  1.     //呼叫方式:
  2.     char* answer =     "0123456";
  3.     char* user_input = "2049367";

  4.     check(answer, user_input);
複製代碼


...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
9
積分
31 點
潛水值
19650 米
3
發表於 2016-12-2 06:20 PM|只看該作者
本帖最後由 kiwis 於 2016-12-2 06:35 PM 編輯

嗯~另外一套想法,執行效率會好一點,但是會使用額外的記憶體...

  1. int char_set[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};

  2.     char* answer =     "0123456";
  3.     char* user_input = "2049367";

  4.     unsigned char A(0);
  5.     unsigned char B(0);
  6.     unsigned char C(0);
  7.     unsigned char D(0);

  8.     // char_set 的 index = user_input[x] 的值,char_set[x] = user_input 的 index
  9.     // -1 為該數字未被使用
  10.     for(int x(0); x<7; x++)
  11.     {
  12.         check02++;
  13.         char_set[ user_input[x]-48 ] = x;  // ascii code - 48 = 數字
  14.     }


  15.     for(int i(0); i<7; ++i)
  16.     {
  17.         check02++;

  18.         if( char_set[ answer[i]-48 ] != -1)
  19.         {
  20.             if( char_set[ answer[i]-48 ] == i )
  21.                 ++A;
  22.             else
  23.             {
  24.                 ++B;

  25.                 if(char_set[ answer[i]-48 ] < i)
  26.                     ++C;
  27.                 if(char_set[ answer[i]-48 ] > i)
  28.                     ++D;
  29.             }
  30.         }
  31.     }
複製代碼


迴圈執行次數從最大 7*7 降到 固定 7*2,
但是多使用了一些記憶體(char_set[10]): p


...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 2Rank: 2

帖子
245
積分
201 點
潛水值
13572 米
4
發表於 2016-12-3 12:01 AM|只看該作者
本帖最後由 scottcheng 於 2016-12-3 12:06 AM 編輯
  1. void check(char *answer, char *input)
  2. {
  3.     char *pch = input;
  4.     char *found;
  5.     int da, di;
  6.     int A, B, C, D;

  7.     A = B = C = D = 0;

  8.     while (*pch != 0) {
  9.         found = strchr(answer, *pch);
  10.         if (found) {
  11.           da = found - answer;
  12.           di = pch  - input;

  13.           if (da == di) {
  14.              A++;
  15.              pch++;
  16.              continue;
  17.           } else
  18.              B++;

  19.           if (da < di)
  20.              C++;
  21.           else
  22.              D++;
  23.         }
  24.         pch++;
  25.     }

  26.     print_f("%dA%dB%dC%dD\n", A, B, C, D);
  27. }
複製代碼
隨便寫寫, 用樓上call法, 其實寫法應該也差不了多少, 你參考看看!...
瀏覽完整內容,請先 註冊登入會員
無欲則剛, 有欲則子孫滿堂. 看來我只比無好一點點!

使用道具檢舉

Rank: 1

帖子
99
積分
188 點
潛水值
24281 米
5
發表於 2016-12-3 08:41 PM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
非常感謝大大們的幫忙,我會試試看,謝謝你們了~
太感動了~




如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部