0

char問題は、このようなコードを使用する必要があるということですが、変数では機能しません。コードを書くのを手伝ってくれますか、それとも配列でそれを行う方法を示してくれますか?

コード:

char numeroMaquina[0] = arc4random() % 9;

switch(numeroMaquina[0]) {
        case 0:
            numeroMaquina[0] = 1;

            break;
        case 1:
            numeroMaquina[0] = 2;

            break;
        case 2:
            numeroMaquina[0] = 3;

            break;
        case 3:
            numeroMaquina[0] = 4;

            break;
        case 4:
            numeroMaquina[0] = 5;

            break;
        case 5:
            numeroMaquina[0] = 6;

            break;
        case 6:
            numeroMaquina[0] = 7;

            break;
        case 7:
            numeroMaquina[0] = 8;

            break;
        case 8:
            numeroMaquina[0] = 9;

            break;
    }

    int numeroMaquina2 = arc4random() % 9;
    switch(numeroMaquina2) {
        case 0:
            numeroMaquina2 = 1;

            break;
        case 1:
            numeroMaquina2 = 2;

            break;
        case 2:
            numeroMaquina2 = 3;

            break;
        case 3:
            numeroMaquina2 = 4;

            break;
        case 4:
            numeroMaquina2 = 5;

            break;
        case 5:
            numeroMaquina2 = 6;

            break;
        case 6:
            numeroMaquina2 = 7;

            break;
        case 7:
            numeroMaquina2 = 8;

            break;
        case 8:
            numeroMaquina2 = 9;

            break;
    }


    int numeroMaquina3 = arc4random() % 9;
    switch(numeroMaquina3) {
        case 0:
            numeroMaquina3 = 1;

            break;
        case 1:
            numeroMaquina3 = 2;

            break;
        case 2:
            numeroMaquina3 = 3;

            break;
        case 3:
            numeroMaquina3 = 4;

            break;
        case 4:
            numeroMaquina3 = 5;

            break;
        case 5:
            numeroMaquina3 = 6;

            break;
        case 6:
            numeroMaquina3 = 7;

            break;
        case 7:
            numeroMaquina3 = 8;

            break;
        case 8:
            numeroMaquina3 = 9;

            break;
    }
4

3 に答える 3

5

これは、誰かが言葉で支払われているコードのように見えます。全体として、コードは次のものとほぼ同等に機能するようです。

char NumeroMaquina[3];

for (int i=0; i<3; i++)
   NumerMaquina[i] = arc4random() % 9 + 1;

あなたが何を達成しようとしているのか正確にはわかりません。本当はそうなりたいのかもしれません

NumeroMaquina[i] = arc4random() % 9 + '1';

では、配列の各要素は代わりに印刷可能な数字になるのでしょうか?

(タイトルが示すように) 3 桁の乱数が必要な場合は、おそらく次のようなものを使用する方が簡単です。

int number = arc4random() % 1000;

編集:0にならないようにするには、次を使用します:

int number = arc4random() % 999 + 1;

...そして、文字列にしたい場合は、次のように変換できますsprintf(一例として):

char as_string[4];

sprintf(as_string, "%3d", number);
于 2012-04-12T00:00:05.603 に答える
0

iPhone は C++11/libc++ をサポートしていると思います。

ゼロ以外の3桁が必要な場合は、次のことができます。

#include <random>

int main() {
    std::random_device r;
    std::seed_seq seed{r(), r(), r(), r(), r(), r(), r(), r()};
    std::mt19937 engine(seed);

    char digits[4] = {};
    std::generate(std::begin(digits),std::end(digits)-1,
      std::bind(std::uniform_int_distribution<char>('1','9'),std::ref(engine)));
}

または多分

int n = std::uniform_int_distribution<int>(0,9*9*9-1)(engine); // 3 digit number in base 9
char digits[4] = {n/9/9%9 + '1',n/9%9 + '1', n%9 + '1'}; // don't use '0' as a digit symbol
于 2012-04-12T01:50:29.340 に答える