プログラム改良

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
cotton618
記事: 8
登録日時: 11年前

プログラム改良

#1

投稿記事 by cotton618 » 11年前

プログラムを改良したいのですが、どのように改良すればいいかわかりません。
教えて下さい。

コード:

	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つを選ぶプログラムとなっていますが、ランダムではなくはじめの数、最後の数、真ん中の数をはじき出すプログラムにしたいと思っています。
ご指導お願いします。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: プログラム改良

#2

投稿記事 by beatle » 11年前

何をやりたいのか伝わりづらいので、もう少し分かりやすい質問をお願いします。

何が3つ以上あるのですか?
はじめの数、最後の数とは、最小値、最大値のことですか?
真ん中の数とは、何でしょうか?

具体的に「sel_numに~が入っているとき、○○という出力を期待しているのだが、□□になってしまって困っている」という質問だと伝わりやすいかも知れません。

cotton618
記事: 8
登録日時: 11年前

Re: プログラム改良

#3

投稿記事 by cotton618 » 11年前

用意しているものは画像です。
複数枚の画像が、番号順に用意されていて、それが3枚以上(現段階では100枚~200枚程度)あり、
その中から今のプログラムではランダムに3つを選ぶという形になっています。
ですがそれをランダムではなく1枚目、真ん中あたりのもの、最後のものの3つを選ぶようなプログラムに改良したいと考えています。

このプログラムでは、画像のファイル名が書かれたファイルからランダムに3つを選び出すという内容になっています。
つまりファイル名の一覧(上から数がふられている)から、1番目、最後、真ん中あたりのものを3つ選ぶという内容に書き換えたいと思っています。

アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: プログラム改良

#4

投稿記事 by spaaaark・∀・ » 11年前

それなら普通に、

コード:

std::vector<int> sel_num(3);

sel_num[ /*最初*/ ] = 0;  
sel_num[ /*最後*/ ] = (int)n; // 要素の最大数をnに格納してることを想定します…なぜキャストしてるか分かりませんが。
sel_num[/*真ん中*/] = sel_num[/*最後*/] / 2;

でいいと思うのですが…。
真ん中の数があいまいなので、とりあえず要素の半分の値を入れることにしました。
オフトピック
ところで、3個と決まっている(?)配列の要素数にvectorを使うのはなぜでしょう?
あとから拡張するのならいいのですが…。
クリエイティブな生活で刺激的な毎日を!

cotton618
記事: 8
登録日時: 11年前

Re: プログラム改良

#5

投稿記事 by cotton618 » 11年前

ありがとうございます。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: プログラム改良

#6

投稿記事 by みけCAT » 11年前

解決でしたら、解決チェックをお願いします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る