合計 昨日 今日

GetRand関数を用いた配列指定の仕方

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: keny
[URL]
ぴよぴよ(111 ポイント)
Date: 2017年9月08日(金) 21:56
No: 1
(OFFLINE)

 GetRand関数を用いた配列指定の仕方

この度質問させていただくのはGetRand関数を用いた配列指定の仕方です。

現在のコードは
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int k[10];
int m[10];
int o[10];
 
     for(int a=0;a<10;a++)
        {
            k[a]=GetRand(9);
        }
 
 
        for(int=0;<10;++)
        {
            for(int=0;<10;++)
            {
                if(k[]=);
                {
                    m[]=o[];
                }
            }
        }


といった感じです。
やりたいことは、kという配列の全てにランダムな数を指定し、そのb番目がcであるならmという配列のb番目にoの配列のc番目の数を指定するということです。
いまのコードだと、kとmの値がランダムではなく固定されてしまいます。

Name: usao
[URL]
ハッカー(139,041 ポイント)
Date: 2017年9月08日(金) 22:27
No: 2
(OFFLINE)

 Re: GetRand関数を用いた配列指定の仕方

GetRand(9)が0から9の値を返すのであれば,
cに関するforについて,
ifの条件を満たすcは1つだけであり,そのcの値はk[b]であるから,
このfor文は,単に

m[b] = o[ k[b] ];

と書けると思う.

また,k[b]の値は単なる乱数であるから,
k[]というバッファに保持する必要も無いように思うので,
aに関するfor文と,k[]なる配列は不要であり,

for( int b=0; b<10; ++b )
{
int kb = GetRand(9);
m[b] = o[ kb ];
}

とすればよいと思う.
kbという一時変数も除外すれば

for( int b=0; b<10; ++b )
{ m[b] = o[ GetRand(9) ]; }

で良いのではないだろうか…と思う.


それはそれとして,
貼られたコードでは15行目を == とすべきではないかと思う.

Name: みけCAT
[URL]
伝説なるハッカー(680,600 ポイント)
Date: 2017年9月08日(金) 22:40
No: 3
(OFFLINE)

 Re: GetRand関数を用いた配列指定の仕方

keny さんが書きました:いまのコードだと、kとmの値がランダムではなく固定されてしまいます。

いまのコードには、
  • 15行目のif文でk[b]とcを比較するのではなく、k[b]にcを代入している
  • 15行目に余計なセミコロンがあるので、16行目~18行目のブロックがif文とは関係なく実行される
という問題がありますね。
Offtopic :
また、変数名に全角のアルファベットが用いられており、個人的に気持ち悪いです。
コンパイラによっては対応していないかもしれないし、全角と半角を切り替える手間もかかりそうなのに、
どうしてわざわざ全角のアルファベットを使っているのか興味深いです。
さらに、5行目に無駄に全角スペースが使われており、これもコンパイラによっては対応していないでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Name: keny
[URL]
ぴよぴよ(111 ポイント)
Date: 2017年9月08日(金) 23:18
No: 4
(OFFLINE)

 Re: GetRand関数を用いた配列指定の仕方

[解決!]

ありがとうございます。
11行目から下を

for( int b=0; b<10; ++b )
{
int kb = GetRand(9);
m[b] = o[ kb ];
}
と書き換えたところ思い通りになりました。
まだまだ学び始めて未熟なもので、代入などの法則があまり分かっていませんでした。

offtopicに関しまして
ところどころ変数に全角があることと、全角スペースがあるのは掲示板に投稿する際にコピーしてきたコードの変数などを書き換えたため起こってしまったものです。困惑させてしまいすみません。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[29人]