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

伊莉討論區

搜索
伊莉需要你的贊助和支持儲值後自動升級用戶組認識好友、聊天,分享生活趣事
蘿莉催眠人妖259luxu中出母乳按摩
我還沒上pcie皇池溫泉nono長生從肝彼女の診為美好

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

[繁/無修正]夢想成為

[繁]月光下的異世界之

[繁/無修正]夢想成為

中國老頭在香港淺水灣

[繁]藥師少女的獨語24

[繁]因為不是真正的夥
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 5327|回復: 7

[作業] 猜數字!如何用C++寫出來?[複製鏈接]

Rank: 2Rank: 2

帖子
278
積分
277 點
潛水值
8890 米
發表於 2017-3-29 07:20 PM|顯示全部樓層
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
本帖最後由 weirdococo 於 2017-3-29 08:14 PM 編輯

最近學校再教C++,出了個作業,然後我用perl寫了一次如下,
  1. #!/usr/bin/env perl6
  2. use v6;

  3. my $howManyShouldPick = { repeat { $_ = prompt("要猜幾個數字,也就是說要生成幾個亂數") } until $_ ~~ /^ \d+ $/; $_ }.();
  4. my @randPick =  ^10 .roll($howManyShouldPick);
  5. my $inputString;
  6. my $countForHowManyTimes = 0;

  7. "猜數字,有 $howManyShouldPick 個數字(每一個範圍是0 .. 9)".say;
  8. repeat {
  9.     repeat { $inputString = prompt("請輸入 $howManyShouldPick 個數字,不能多不能少") } until $inputString ~~ /^ \d ** {$howManyShouldPick} $/;
  10.     $inputString = $inputString.split("",:skip-empty).map({ $_.Int }).cache;
  11.     say qq:to/END/;
  12.     你答的次數有 { ++ $countForHowManyTimes } 次
  13.     你答對的元素有 { ($inputString.Bag ∩ @randPick.Bag).values.sum } 個
  14.     你答對的順序有 { [+] (@$inputString «==» @randPick) } 個
  15.     END
  16. }
  17. until  [&&] (@$inputString «==» @randPick) ;


  18. "你答對了,恭喜".say;     
複製代碼


其實我可以想辦法把上面的東西全部用C++照寫一次,但我想要了解C++想事情的方法!
畢竟C++有比較豐富友善的語法(照老師的說法,其他語在語法概念少於C++,像是perl有只有regex可以和C++比而已)!
那這題用C++怎麼寫呢?(提外話,現在perl開始要做javascript backend,期待哪一天C++也有javascript backend,這樣就不用學會javascript了!)


...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

使用道具檢舉

帖子
111
積分
0 點
潛水值
24790 米
發表於 2017-3-30 07:30 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
就 rand 然後 迴圈 去比較使用者輸入的答案
這種CODE 都不會太難
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

Rank: 2Rank: 2

帖子
278
積分
277 點
潛水值
8890 米
發表於 2017-3-30 08:24 PM|顯示全部樓層
本帖最後由 weirdococo 於 2017-3-30 08:37 PM 編輯
coal511464 發表於 2017-3-30 07:30 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

就 rand 然後 迴圈 去比較使用者輸入的答案
這種CODE 都不會太難
...
瀏覽完整內容,請先 註冊登入會員

點評

ren1244 C++ 有 vector ,可以當作是可變長度的陣列。就不需要用到 malloc 或是 new 了。  發表於 2017-3-31 12:23 AM

使用道具檢舉

Rank: 1

帖子
575
積分
196 點
潛水值
14681 米
發表於 2017-3-31 12:13 AM|顯示全部樓層
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
如果是想練習C++特性的話,可以用class來做這題。
也就是說,做一個GaussNumber物件出來。
可以先定義出我們要的功能在 gauss.h 中:
  1. #ifndef GAUSSNUMBER
  2. #define GAUSSNUMBER

  3. #include <string>
  4. #define GAUSS_MAXLENGTH 6

  5. class GaussNumber
  6. {
  7. private:
  8.     int N; //數字長度(允許區間:[2,GAUSS_MAXLENGTH])
  9.     int count; //已猜次數
  10.     char num[GAUSS_MAXLENGTH]; //亂數產生的數字放這邊
  11. public:
  12.     //建構函數
  13.     GaussNumber(int n=4);
  14.    
  15.     //操作
  16.     void reset(); //重置遊戲狀態
  17.     void gauss(std::string& g,int &A,int &B); //猜數字,將結果存在A跟B
  18.    
  19.     //查詢資料
  20.     int getGaussCount(); //回傳已猜次數
  21.     int getLength(); //回傳猜數字長度
  22. };
  23. #endif
複製代碼
然後主程式  main.cpp 就可以這樣寫:
  1. #include <iostream>
  2. #include "Gauss.h"

  3. int main()
  4. {
  5.     int howManyShouldPick,A,B;
  6.     std::cout<<"How many:";
  7.     std::cin>>howManyShouldPick;
  8.     GaussNumber G(howManyShouldPick);
  9.     std::string myGauss;
  10.     if(G.getLength()<0)
  11.     {
  12.         std::cout<<"Error";
  13.         return 0;
  14.     }
  15.     do
  16.     {
  17.         std::cout<<"Gauss("<<G.getGaussCount()+1<<")";
  18.         std::cin>>myGauss;
  19.         G.gauss(myGauss,A,B);
  20.         std::cout<<A<<'A'<<B<<"B\n";
  21.     }while(A<howManyShouldPick);
  22.     return 0;
  23. }
複製代碼
最後我們還需要把 gauss.h 中的內容實作出來
寫在 gauss.cpp 中:(這邊細節就由您來完成了)
  1. #include "Gauss.h"
  2. #include <cstdlib>

  3. GaussNumber::GaussNumber(int n)
  4. {
  5.     //建構函數,檢查正確的 n 值,儲存在 N 後初始化
  6. }
  7. void GaussNumber::reset()
  8. {
  9.     //將 count 重置
  10.     //重新取亂數
  11. }
  12. void GaussNumber::gauss(std::string& g,int &A,int &B)
  13. {
  14.     //根據輸入的資料 g 判斷有幾 A 幾 B
  15. }
  16. int GaussNumber::getGaussCount()
  17. {
  18.     return count;
  19. }
  20. int GaussNumber::getLength()
  21. {
  22.     return N;
  23. }
複製代碼




...
瀏覽完整內容,請先 註冊登入會員
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

CoNsTaRwU 該用戶已被刪除
發表於 2017-4-4 02:00 AM|顯示全部樓層
說到 C++ 的奇技淫巧
有沒有大大要用 TMP 或是 Policy Based Design 之類的東西刻一個猜數字出來? XDD
或是用 class 間的繼承關係來當作流程控制之類的?
不要叫我寫,我不會 XDDD




如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

帖子
111
積分
0 點
潛水值
24790 米
發表於 2017-5-20 02:06 PM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
什麼啊

"首先要處理使用者輸入,讓他不能輸入不是數字的字元,用一個while加上regex應該可已解決,雖然還沒有用過的C++11的regex,但我想因該不是問題。"

ASCII code 不是就能解決了?
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
278
積分
277 點
潛水值
8890 米
發表於 2017-5-20 11:55 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
coal511464 發表於 2017-5-20 02:06 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

什麼啊

"首先要處理使用者輸入,讓他不能輸入不是數字的字元,用一個while加上regex應該可已解決,雖然還 ...
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

o_g349 該用戶已被刪除
發表於 2017-9-14 01:24 PM|顯示全部樓層
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
weirdococo 發表於 2017-3-30 08:24 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我C++也只學了半個學期,所以想法因該很差,
先說我看到這題想的解題藍圖,
首先要處理使用者輸入,讓他不 ...
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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