Re: [問題] c++擲骰子題目 賭香腸

看板C_and_CPP作者 (bwzhan)時間9年前 (2014/11/28 14:03), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
小弟初學C++,常常下好離手 #include<iostream> #include<cstdlib> #include<ctime> using namespace std; int tmp_num[4]; int match_tmp_num(void){ int grade=0; if(tmp_num[0]==tmp_num[1] && tmp_num[1]==tmp_num[2] && tmp_num[2]==tmp_num[3]) { grade=100; //cout<<"分數:100分\n"; } else if(tmp_num[0]==tmp_num[1] && tmp_num[2]==tmp_num[3]) { grade=tmp_num[2]+tmp_num[3]; //cout<<"分數:"<<grade<<"分\n"; } else if(tmp_num[0]==tmp_num[1]){ grade=tmp_num[2]+tmp_num[3]; //cout<<"分數:"<<grade<<"分\n"; } else if(tmp_num[1]==tmp_num[2]){ grade=tmp_num[0]+tmp_num[3]; //cout<<"分數:"<<grade<<"分\n"; } else if(tmp_num[2]==tmp_num[3]){ grade=tmp_num[0]+tmp_num[1]; //cout<<"分數:"<<grade<<"分\n"; } return grade; } void get_tmp_num(void){ int i,j,tmp; for(i=0;i<4;i++){ //取亂數:介於1~6 tmp_num[i]=rand()%6+1; } for(i=0;i<4;i++){ //由小到大排序 for(j=i+1;j<4;j++){ if ( tmp_num[i] > tmp_num[j] ) { tmp=tmp_num[i]; tmp_num[i]=tmp_num[j]; tmp_num[j]=tmp; } } } } int main(void){ int grade; srand(time(NULL)); for (int i=0;i<100;i++){ get_tmp_num(); grade=match_tmp_num(); cout << tmp_num[0] << " " << tmp_num[1] << " " << tmp_num[2] << " " <<tmp_num[3] << " 共" << grade << "分\n"; } return 0; } 請各位大大多多指教!! ※ 引述《sone90935 (icesky)》之銘言: : 四個骰子 使其一次可以產生4個骰子之值請模擬5次值骰子結果 : 每次根據4個骰子之值印出分數 : 計分規則如下 : 1 若恰有2個骰子點數相同 則分為兩個不同點數相加 : 2 若有兩對骰子點數相同 則分數為較高那對點數和 : 3 若有4個骰子點數相同 分數即為100 : 4 其他情形 無分數 : 要如何使用for跟if去寫這個程式 : 完全下不了手... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.71.78.244 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1417154595.A.AAB.html ※ 編輯: bwzhan (210.71.78.244), 11/28/2014 14:10:25
文章代碼(AID): #1KU10Zgh (C_and_CPP)
文章代碼(AID): #1KU10Zgh (C_and_CPP)