2016-07-06 8 views
-2

このコードはランダムなカードタイプを印刷することになっていますが、現時点では数字と数字が表示されていますが、別のカードタイプを印刷しますが、2番目のカードタイプは異なるタイプになります。あなたが理解するため誰でもこのコードが毎回動作しない理由を知ることができますか?

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 
struct houses { 
    int house_number; 
    string house_name; 
}; 
int main() 
{ 
    srand(time(NULL)); 
    houses house[4]; 
    house[0].house_number = 0; 
    house[1].house_number = 1; 
    house[2].house_number = 2; 
    house[3].house_number = 3; 
    house[0].house_name = "spades"; 
    house[0].house_name = "hearts"; 
    house[0].house_name = "diamonds"; 
    house[0].house_name = "clubs"; 
    int temp, tempo, tempor; 
    temp = house[(rand() % 4)].house_number; 
    cout << temp << "\n"; 
    tempo = house[(rand() % temp)].house_number; 
    tempor = house[(rand() % (4 - temp)) + temp].house_number; 
    int x = (rand() % 2); 
    if (x == 0) { 
     cout << tempo; 
    } 
    else if (x == 1) { 
     cout << tempor; 
    } 
} 

、コード内でこの部分:[(RAND():[(RAND()の%temp)]が0の間の乱数とし、このコードを印刷し、最後の番号を生成しようとしています%(4-temp))+ temp]は、印刷された最後の数字と配列内の最大の数字の間の乱数を取得しようとしています。これは私が今や1つの数字を小さくし、1つの数字を大きくしても同じではないことを意味します。

ここで、xについて0と1の間の乱数を生成することによって、xを使って次の数が過去の数よりも大きいか小さいかを判断すると、3つの小さい数と1つの大きな数がある場合、 1つの大きい数字は次の数字が3つの小さい数字として印刷されるのと同じチャンスを持っていますが、別の時間にそれを並べ替えることができます。

+0

あるべき_doesn'tのwork_の一部について、もう少し詳しく説明してください。 –

+0

1. [namespace stdを使用すると悪い](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice)。 2.コードをインデントします。 3.おそらく 'house ... name'は0以外のインデックスを持っているはずです –

+0

実行するために使用できるコードブロックがありませんか? –

答えて

2

おそらく

house[0].house_name = "spades"; 
house[0].house_name = "hearts"; 
house[0].house_name = "diamonds"; 
house[0].house_name = "clubs"; 

house[0].house_name = "spades"; 
house[1].house_name = "hearts"; 
house[2].house_name = "diamonds"; 
house[3].house_name = "clubs"; 
+0

はい私はそれを変更する必要がありますが、atmはhouse_nameのみを使用しています –

関連する問題