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

作者: bwzhan (bwzhan)   2014-11-28 14:03:13
小弟初學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去寫這個程式
: 完全下不了手...

Links booklink

Contact Us: admin [ a t ] ucptt.com