明天要交作業了
可是我怎樣寫一直錯
有人可以幫我嗎?
題目是:請使用亂數寫一個骰子程式,每次執行結果必需不能重複。
執行結果:
請輸入骰的次數:
骰子一的出現次數為__次,機率為____%
骰子二的出現次數為__次,機率為____%
依此類堆
謝謝
可列印頁面
明天要交作業了
可是我怎樣寫一直錯
有人可以幫我嗎?
題目是:請使用亂數寫一個骰子程式,每次執行結果必需不能重複。
執行結果:
請輸入骰的次數:
骰子一的出現次數為__次,機率為____%
骰子二的出現次數為__次,機率為____%
依此類堆
謝謝
這應該是 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:
去找書抄吧~我記的書有這個遊戲 ;)