![]() |
【求助】c++,骰子寫不出來@@ 明天要交作業了 可是我怎樣寫一直錯 有人可以幫我嗎? 題目是:請使用亂數寫一個骰子程式,每次執行結果必需不能重複。 執行結果: 請輸入骰的次數: 骰子一的出現次數為__次,機率為____% 骰子二的出現次數為__次,機率為____% 依此類堆 謝謝 |
這應該是 random 的基本題目吧? 把課本範例拿出來看一看 自己寫一段上來再說吧! |
自己刪掉... |
如果樓主真的是一直寫都錯, 怎不把自己寫的程式碼貼上來請大家指正? 很明顯的只是上來看有沒有人[b]好心[/b]幫你寫出來以便拿去抄抄交差了事, 看來又是個網路乞丐! |
我不是你說的人 只是我寫的很爛而已 要我貼也可以啊 #include <stdio.h> #include <stdlib.h> int main() { int n = 0, i = 0, RndNum; int point1 = 0, point2 = 0, point3 = 0, point4 = 0, point5 = 0, point 6 = 0; printf("請輸入骰的次數: "); scanf("%d", &n); if (n <= 0) { printf("最少請輸入一次\n"); return 1; } for (i=0;i<n;i++) { RndNum = rand() % 6 + 1; printf("%d\n", RndNum); if (RndNum == 1) point1++; if (RndNum == 2) point2++; } printf("骰子一的出現次數為 %d 次,機率為 %d %%\n", point1, point1 * 100 / i); printf("骰子二的出現次數為 %d 次,機率為 %d %%\n", point2, point2 * 100 / i); printf("骰子三的出現次數為 %d 次,機率為 %d %%\n", point3, point3 * 100 / i); printf("骰子四的出現次數為 %d 次,機率為 %d %%\n", point4, point4 * 100 / i); printf("骰子五的出現次數為 %d 次,機率為 %d %%\n", point5, point5 * 100 / i); printf("骰子六的出現次數為 %d 次,機率為 %d %%\n", point6, point6 * 100 / i); system("pause"); return 0; } 可以麻煩你們幫我看那邊有錯嗎? 謝謝 |
沒有人第一天寫就寫得很好 我只能說 這種東西看自己囉 別人頂多只能指導 成與敗都在你自己 |
題目有點奇怪? 有幾個骰子?若每次執行不能重覆 那不是1~6只能出現一次? 出現過的不算...那機率是各1/6嗎? 還是重復出現的不算但也列入機率統計? |
我的題目是有一顆骰子,六面六個數字 我說執行結果不能重復的意思是說 如果第一次執行時,一出現了一百次 那第二次執行時,一出現結果不能跟第一次一樣 每次骰子的點數都可以重復沒有關係的 |
[QUOTE=Age]我的題目是有一顆骰子,六面六個數字 我說執行結果不能重復的意思是說 如果第一次執行時,一出現了一百次 那第二次執行時,一出現結果不能跟第一次一樣 每次骰子的點數都可以重復沒有關係的[/QUOTE] 那就把亂數種子設成隨系統時間改變 srand(time(NULL)); 就行了吧,不知有沒有了解你的意思? 我看你的程式好像沒設亂數種子 P.S.我也是新手,而且我RUN不動你的程式,所以用猜的... --------------------------------------------------------------- 我試過了,你設一下亂數種子應該OK了 (否則答案都一樣) 還有你定義的point6多個空格 希望有幫到你^.^ |
自己刪掉... |
在亂數產生之前先 randomize(); 第二次執行時就不會跟第一次一樣 另機率統計應該不是除i吧...總次數應該是n |
可以請問一下scanf("%d", &n)該如何使用呢? |
[QUOTE=小熊逛大街]可以請問一下scanf("%d", &n)該如何使用呢?[/QUOTE] 這個函式的設計有些特別,它不能接受變數名,必須給它變數的地址。 常用的輸入格式如下: 如果要輸入一個 int 型態的數,用 %d 如果要輸入一個 unsigned int 型態的數,用 %u 如果要輸入一個 float 型態的數,用 %f 如果要輸入一個 double 型態的數,用 %lf (小寫的 L 和 F) 以上的數,假設都以十進制數字輸入。 如果要輸入一個 char 型態的數或字元,不要用 scanf(), 改用 getchar() getchar() 會從標準輸入裝置一個一個字元地讀進來,它不會跳過任何字元。但是 scanf() 會自動跳過所有的連續空白,所謂空白包括了空格、跳格和折列指令 ('\n')。當第一次呼叫 scanf() 的時候,它跳過所有的連續空白,讀取第一個廣義字串,然後按照格式 (例如 %d 或 %f 等等) 解釋讀進來的字串,如果解釋成功了,就將它儲存到指定的地址,並且返回 1;如果沒有成功,就返回 0;如果讀進來的資料代表輸入檔案之結束,就返回 EOF。當第二次呼叫 scanf() 的時候,它就跳過第一個廣義字串之後的所有連續空白,讀取第二個廣義字串,依此類推。 |
[code]#include "stdlib.h" #include <iostream> #include "time.h" using namespace std; struct DiceNumAppearTimes { int nNum; int nTimes; } numAppearTimes[6] = {1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0}; void main() { srand(time(0)); int nTimes = 0; cout << "請輸入擲骰次數:"; cin >> nTimes; int nIndex = 0, nNum = 0; for(; nIndex < nTimes; ++nIndex) { (numAppearTimes[(rand() % 6)].nTimes)++; } for(nIndex = 0; nIndex < 6; ++nIndex) { cout << "Number " << numAppearTimes[nIndex].nNum << " : " << numAppearTimes[nIndex].nTimes << " times. (" << (numAppearTimes[nIndex].nTimes * 100 / nTimes) << "%)" << endl; } }[/code] 開發環境 : VC++ 6. 交作業前請儘量搞懂程式流程,以免一問三不知... :circle: |
[QUOTE=小熊逛大街]可以請問一下scanf("%d", &n)該如何使用呢?[/QUOTE] 問MSDN吧... 你以後遇到問題總不能都上網問別人吧? Win32下的問題有一大堆都能在MSDN裡翻出來 只是有些比較難翻 不過 你要學著會找答案 |
[QUOTE=小熊逛大街]可以請問一下scanf("%d", &n)該如何使用呢?[/QUOTE] 既然你說是要交作業 那應該就是在上課中 如果是在上課中 你的課本沒有講到 scanf 的用法 那那本可以丟了 |
[QUOTE=怪盜基德]既然你說是要交作業 那應該就是在上課中 如果是在上課中 你的課本沒有講到 scanf 的用法 那那本可以丟了[/QUOTE] 小弟根本還沒買書也沒上過課,純粹只有上網看過其他人寫的筆記而已 還有作業根本不是我要交的好嗎,請搞清楚好嗎......................... :|||: |
[QUOTE=Age]明天要交作業了 可是我怎樣寫一直錯 有人可以幫我嗎? 題目是:請使用亂數寫一個骰子程式,每次執行結果必需不能重複。 執行結果: 請輸入骰的次數: 骰子一的出現次數為__次,機率為____% 骰子二的出現次數為__次,機率為____% 依此類堆 謝謝[/QUOTE] 話說… 雖然這裡是「閒 話 家 常 灌 水 版 」但是問program這種東西是不是該去比較專業一點的地方問呢? Delphi K.Top : [url]http://delphi.ktop.com.tw/[/url] Delphi、C/C++、Single chip、Analog/Digital.... etc. 那裡有很多台灣的高手能幫你解答的,而且您也能學會「該如何發問」。 |
[QUOTE=怪盜基德]既然你說是要交作業 那應該就是在上課中 如果是在上課中 你的課本沒有講到 scanf 的用法 那那本可以丟了[/QUOTE] 如果以C++入門的書來講 一般沒有scanf是很正常的 因為C++都建議使用cout 和 cin來取代原本的函數 :|||: |
原PO只不過是要問個問題嘛!!怎麼一路看下來有些是冷嘲熱諷的言論?? 如果有人覺的原PO是伸手牌的,大可不理,何必講那些有的沒的!! :mad: |
[QUOTE=powmien]話說… 雖然這裡是「閒 話 家 常 灌 水 版 」但是問program這種東西是不是該去比較專業一點的地方問呢? Delphi K.Top : [url]http://delphi.ktop.com.tw/[/url] Delphi、C/C++、Single chip、Analog/Digital.... etc. 那裡有很多台灣的高手能幫你解答的,而且您也能學會「該如何發問」。[/QUOTE] 曾經在這個網站問過問題,可是太簡單的問題的文章他們會直接砍掉,可是所謂的簡單的定義因人而異吧~~ :mad: |
[QUOTE=Picasso]原PO只不過是要問個問題嘛!!怎麼一路看下來有些是冷嘲熱諷的言論?? 如果有人覺的原PO是伸手牌的,大可不理,何必講那些有的沒的!! :mad:[/QUOTE] 的確如您所說的,但是沒人指點他正確的方向,他下次是不是還是會這樣子呢?仍然視而不見?事不關已?說不定樓主很有潛力呢…未來的programmer star... 當然要他能夠正確的學習跟求知。 |
[QUOTE=nick6562]曾經在這個網站問過問題,可是太簡單的問題的文章他們會直接砍掉,可是所謂的簡單的定義因人而異吧~~ :mad:[/QUOTE] 事實上,只要遵從版規是不會被砍的,如果你遵從版規被砍的話,你可以跟我說是那一個版,你把原文寄給我,我可以幫你抱屈,我在那混了蠻久的時間,倒還沒看過有什麼太簡單被砍掉的事…。 我菜鳥時也發問過太簡單的問題沒人回,直到被埋沒在其它的文章裡.. 也沒被砍.. |
[QUOTE=powmien]話說… 雖然這裡是「閒 話 家 常 灌 水 版 」但是問program這種東西是不是該去比較專業一點的地方問呢? Delphi K.Top : [url]http://delphi.ktop.com.tw/[/url] Delphi、C/C++、Single chip、Analog/Digital.... etc. 那裡有很多台灣的高手能幫你解答的,而且您也能學會「該如何發問」。[/QUOTE] 最近也開始再逛 Delphi K. Top 了... 不過不曉得為什麼...總覺得開網頁的速度好慢好慢... |
不是錯覺,是這個網頁真的很慢... :|||: [QUOTE=rock]最近也開始再逛 Delphi K. Top 了... 不過不曉得為什麼...總覺得開網頁的速度好慢好慢...[/QUOTE] |
[QUOTE=小熊逛大街]小弟根本還沒買書也沒上過課,純粹只有上網看過其他人寫的筆記而已 還有作業根本不是我要交的好嗎,請搞清楚好嗎......................... :|||:[/QUOTE] 對不起 看錯了 :|||: 不過如果要改用 C++ 確實不用管 scanf 了 那是我這種 愛寫 C 與 C++ 混種程式的人改不掉的壞習慣 |
[QUOTE=powmien]事實上,只要遵從版規是不會被砍的,如果你遵從版規被砍的話,你可以跟我說是那一個版,你把原文寄給我,我可以幫你抱屈,我在那混了蠻久的時間,倒還沒看過有什麼太簡單被砍掉的事…。 我菜鳥時也發問過太簡單的問題沒人回,直到被埋沒在其它的文章裡.. 也沒被砍..[/QUOTE] 謝謝你的幫忙.... :) 因為當時我也學C++不久,像當初學校快期末考了,我想問問題,因不知道如何寫發問標題,於是以一個"一個C++的問題"做為標題,發問的問題就被砍了,但討論版我確定是走對的地方... :|||: |
[QUOTE=nick6562]謝謝你的幫忙.... :) 因為當時我也學C++不久,像當初學校快期末考了,我想問問題,因不知道如何寫發問標題,於是以一個"一個C++的問題"做為標題,發問的問題就被砍了,但討論版我確定是走對的地方... :|||:[/QUOTE] 以"一個C++的問題"做為標題,已經不是一個夠格的標題了... 標題應該至少要簡述一下問題的內容,方便以後給人查詢;如果大家都是用這樣簡單的標題發問,那麼搜索起來就累人了! :) 這個準則應該是在各大論壇通行的! :circle: |
去找書抄吧~我記的書有這個遊戲 ;) |
所有時間均為 +8。現在的時間是 12:41 PM。 |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。