• ベストアンサー

変数を選択する方法はありませんか

いつもこのカテゴリーでお世話になっている初心者です。 ファイルから読み込んだ単純な数値などを対応する変数に順番にセットするときプログラム上の順番にファイル構造を作って読み込ませています。 この場合、ファイル内のデーターの順番は任意とし読み込んで変数にセットする際に対応する変数にセットすることは出来ないでしょうか。 ファイル内のイメージとしては //名称(変数対応) ,データー beer3 ,150 sake2 ,500 beer1 ,200 beer4 ,250 beer2 ,170 sake1 ,100 と・まこんな感じでファイル内のデーターは任意で用意しておきプログラムの中で対応する変数にセットしたいのですが 変数名 の 変数? 的になりどうにも良い方法が思いつきません。 なにか良い方法はないでしょうか

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

  • ベストアンサー
  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

STLのstd::mapで連想配列が使えるのでそれで実装してみてはどうでしょう。

yzm250
質問者

お礼

MASA_H様 ありがとうございます。STL、連想配列って初めてしりました。 何かすごく難しそうですが見てみますと配列変数の指定数字を 文字列などを添え字とすることが出来るとあります。 この文字列を変数と置き換えると何とか行きそう?までは解りました。 チャレンジして見ます、ありがとうございました。

その他の回答 (1)

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.2

>プログラムの中で対応する変数にセットしたいのですが ★「ランダム」なデータを全て読み込んで、「ソート」(*)でよいのでは。 *:プログラムに対応する順番になるように行(データ)を並び替え。 beer3 ,150 sake2 ,500 beer1 ,200 beer4 ,250 beer2 ,170 sake1 ,100 これを beer1 ,200 beer2 ,170 beer3 ,150 beer4 ,250 sake1 ,100 sake2 ,500 としたい、ですよね?。 「違う」場合は、私の「回答」はここまで。 ------------------------------------------------- ★スケルトンを・・・。 #define GYO 6 void SortData( char cWork[][64], int iLine ) { ヒント  strcmp() を用いる(戻り値、正負で大小判定)。  char cDummy[64];  for( i = 0; i < iLine; i++ ){    ・    if( 0 < strcmp( cWork[i], cWork[j] ) ) continue;    ( [i] [j] の入れ替え) } void main() {  int iLine = 0;  char cStore[GYO][64], cBuf[64];  (ファイルオープン)  while( NULL != fgets( cBuf, 64, fp ) ){   strcpy( cStore[iLine++], cBuf );  }  (ファイルクローズ)  SortData( cStore, iLine ); // 「ソート」呼び出し  (本体処理) } ☆「ソート」については、検索してください(参考URLのトップは文字列でなく「数」のソート例)。

参考URL:
http://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-01/cp-01-10-1.html
yzm250
質問者

お礼

yama5140さんありがとうございます。 実際の変数名は作業に応じた名前となっていてランダムです。 ソート出来るような名前と数字などで構成すればよいのですが プログラム作成の都合上それも出来ないので未だ方式が固まっていません。 1000個ほどの変数となります。 MASA_Hさんに解答して頂いた連想配列に挑戦中です。