0

ここで私の問題を解決する方法を理解するのに苦労しています。ここに行って専門家に助けを求めてみませんか.

主なことは、私は学校で数週間 C++ を勉強しただけで、大まかに言えば、if/else、for/while/do ループ、配列、そして明らかにいくつかの基本的なことです。これを解決しようとするときの主な問題は、私の知識が十分かどうかです。ベクトルなどについて読んだら、これは簡単に解決できますか?

さて、私が成功したのは、次のように解決した数値をソートすることです: 基本的に、私が使用したのはバブルソートアルゴリズムです (と思いますか?)

for(int i=0; i<6; i++) 
{
    for(int j=0; j<6; j++)
    {
        if(slump[j]>random[j+1])        
        {
            temp = random[j];
            slump[j] = random[j+1];
            slump[j+1] = random;        
        }
    }
}

ただし、0〜6の各インデックスに乱数を割り当てるときに、重複が表示されないようにする方法を理解することはできません(行ごとに重複がある可能性がありますが、同じ行にはありません) 。

for(int j=0;j<7;j++) 
{
    random[j] = rand()%40+1;
}

英語は私の母国語ではないので、何か明確にする必要がある場合は教えてください。そして、ここであまり複雑ではない解決策で、これを解決する方法についていくつかの助けを見つけることができることを願っています.

4

2 に答える 2

2

並べ替え手順は重複を防ぐのに役立たないため、 のに解決する必要があります。

まず、重複した番号がないことを確認します。必要な数が揃ったら。

乱数がないようにするには、次の 2 つのオプションがあります。

  • 各番号が生成された後、既に取得されている番号と照合します。繰り返される場合は破棄し、新しい乱数を取得します。

  • 40の広い範囲で7つの数字が欲しいので、それを注文として使用してください。最初の数字は 0 から 39 の間で選択され、2 番目の数字は 0 から 38 の間で選択されます。すでに使用されている数字はスキップされます (したがって、3-5-2-4 のランダムなシーケンスは、数字シーケンス 3-6-2-7 を意味します)

于 2013-10-19T16:16:59.687 に答える
0

うーん、重複をチェックするのはそれほど難しくありません。

たとえば、次のことを試すことができます。

for (int i = 0; i < 7; i++)
{
  random[i] = rand%40 + 1;
}

for (int i = 0; i < 7; i++)
{
   for (int j = 1; j < 7; j++)
   {
     if(random[i] == random[j])
     {
        random[i] = rand%40 + 1;
        i = i -1;
        break;
     }
   }
}

数字がランダム[]で繰り返されているかどうかの専門家チェックであるべきだと確信しています。また、ベクターの方が楽しく、多少使いやすいですが、この操作が簡単になるわけではありません。

それが役に立てば幸い。=)

于 2013-10-19T17:22:18.140 に答える