• ベストアンサー

登録した文字列をランダムに表示する。

とても初歩的な質問だとは思いますが宜しくお願いします。 ただいまある実験用のプログラミングをBCB6で行っているのですが、 完全に行き詰ってしまいました。 作るものの概要としては 『ボタンを押す間隔を測り、測定した時間に応じて、 2つのカテゴリーからそれぞれ登録された文字列を表示させる。』 といったものです。 文字列を100個×2カテゴリー=合計200個登録する方法、 それをランダムで表示させる方法(1度使った文字列は使わない) をご教授いただきたいのです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

const char* Cat1[] = { "String 1-001", "String 1-002", // 中略 "String 1-099", "String 1-100" }; const char* Cat2[] = { "String 2-001", "String 2-002", // 中略 "String 2-099", "String 2-100" }; とすれば、0~99の乱数(rand()など)をCat1[]、Cat2[]の添字にすればランダムで文字列を選択することは出来る。 一度使ったものをどこかに記憶しておいけば、ダブらないようにも出来る。 何がしたいのかが今一理解できないの。

migy
質問者

お礼

ご回答ありがとうございます。 いまいち僕の説明不足でしたのでもう少し詳しく説明させていただきます。 今何とかしたいと思っている部分は具体的な例を挙げると以下のようなものです。 例えば「食物」を示す名詞が100個、「鉱物」を示す名詞が100個あるとします。 次にボタン1とボタン2、メモ1があり、ボタン1を押すと「食物」を示す名詞が、 ボタン2を押すと「鉱物」を示す名詞がメモ1に表示されるとします。 プログラムを起動させるとそれぞれの100個の名詞が それぞれのカテゴリー内でランダムに並び替えられ、 ボタン1を押すと「食物」を示す名詞が、 ボタン2を押すと「鉱物」を示す名詞が 並び替えられた順に、つまり重複せずにランダムでメモ1に表示されるようにしたいのです。 説明下手ですいません。

その他の回答 (2)

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.3

#2さんの回答で問題は片付くでしょう。 Cat1[0..99]及びCat2[0..99]を並び替えた上で 先頭へのポインタ(またはoffsetを示す数値)を各個に用意。 あとは"ボタン1"押されたら Cat1の現在地が示す値を表示して、ポインタないしoffsetをインクリメント。 "ボタン2"が押されたら、同じくCat2のポインタないしoffsetを操作。 それとも、考え方ではなく実装の仕方が分からないのかしら。

migy
質問者

お礼

あらためて本を片手に見ていたら、 段々ではありますが理解できて来ました。 ありがとうございます。 早速試してみます。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  Cの乱数についての記載があるサイトを下に貼ります。  あとは、使った文字列には印をつけて再選択するようにしたらどうでしょう。 では。

参考URL:
http://kone.vis.ne.jp/diary/diaryb10.html
migy
質問者

お礼

回答ありがとうございます。 乱数に関してはそれほど厳密でなくて良いので、 rand()でも使おうと思っています。 ちょっとリンク先は僕には難しすぎました。 本当に申し訳ありません。