ページ 1 / 1
プログラム改良
Posted: 2013年11月27日(水) 15:24
by cotton618
プログラムを改良したいのですが、どのように改良すればいいかわかりません。
教えて下さい。
コード:
std::vector<int> sel_num(3);
while(1)
{
for (int i = 0; i < 3; i++)
{
sel_num[i] = rand() / (RAND_MAX / (int)n + 1);
}
if(sel_num[0] == sel_num[1] || sel_num[0] == sel_num[2] ||
sel_num[1] == sel_num[2])
{
continue;
}
else break;
}
3つ以上ある中から、ランダムに3つを選ぶプログラムとなっていますが、ランダムではなくはじめの数、最後の数、真ん中の数をはじき出すプログラムにしたいと思っています。
ご指導お願いします。
Re: プログラム改良
Posted: 2013年11月27日(水) 15:35
by beatle
何をやりたいのか伝わりづらいので、もう少し分かりやすい質問をお願いします。
何が3つ以上あるのですか?
はじめの数、最後の数とは、最小値、最大値のことですか?
真ん中の数とは、何でしょうか?
具体的に「sel_numに~が入っているとき、○○という出力を期待しているのだが、□□になってしまって困っている」という質問だと伝わりやすいかも知れません。
Re: プログラム改良
Posted: 2013年11月27日(水) 15:53
by cotton618
用意しているものは画像です。
複数枚の画像が、番号順に用意されていて、それが3枚以上(現段階では100枚~200枚程度)あり、
その中から今のプログラムではランダムに3つを選ぶという形になっています。
ですがそれをランダムではなく1枚目、真ん中あたりのもの、最後のものの3つを選ぶようなプログラムに改良したいと考えています。
このプログラムでは、画像のファイル名が書かれたファイルからランダムに3つを選び出すという内容になっています。
つまりファイル名の一覧(上から数がふられている)から、1番目、最後、真ん中あたりのものを3つ選ぶという内容に書き換えたいと思っています。
Re: プログラム改良
Posted: 2013年11月27日(水) 16:29
by spaaaark・∀・
それなら普通に、
コード:
std::vector<int> sel_num(3);
sel_num[ /*最初*/ ] = 0;
sel_num[ /*最後*/ ] = (int)n; // 要素の最大数をnに格納してることを想定します…なぜキャストしてるか分かりませんが。
sel_num[/*真ん中*/] = sel_num[/*最後*/] / 2;
でいいと思うのですが…。
真ん中の数があいまいなので、とりあえず要素の半分の値を入れることにしました。
オフトピック
ところで、3個と決まっている(?)配列の要素数にvectorを使うのはなぜでしょう?
あとから拡張するのならいいのですが…。
Re: プログラム改良
Posted: 2013年11月27日(水) 18:55
by cotton618
ありがとうございます。
Re: プログラム改良
Posted: 2013年12月01日(日) 15:27
by みけCAT
解決でしたら、解決チェックをお願いします。