映画のエンドロール観る派?観ない派?

いつもこのカテゴリーでお世話になっている初心者です。
ファイルから読み込んだ単純な数値などを対応する変数に順番にセットするときプログラム上の順番にファイル構造を作って読み込ませています。

この場合、ファイル内のデーターの順番は任意とし読み込んで変数にセットする際に対応する変数にセットすることは出来ないでしょうか。

ファイル内のイメージとしては
//名称(変数対応) ,データー
beer3 ,150
sake2 ,500
beer1 ,200
beer4 ,250
beer2 ,170
sake1 ,100
と・まこんな感じでファイル内のデーターは任意で用意しておきプログラムの中で対応する変数にセットしたいのですが
変数名 の 変数? 的になりどうにも良い方法が思いつきません。

なにか良い方法はないでしょうか

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

チャレンジして見ます、ありがとうございました。

お礼日時:2008/04/13 23:51

>プログラムの中で対応する変数にセットしたいのですが



★「ランダム」なデータを全て読み込んで、「ソート」(*)でよいのでは。

*:プログラムに対応する順番になるように行(データ)を並び替え。

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/ …
    • good
    • 0
この回答へのお礼

yama5140さんありがとうございます。

実際の変数名は作業に応じた名前となっていてランダムです。
ソート出来るような名前と数字などで構成すればよいのですが
プログラム作成の都合上それも出来ないので未だ方式が固まっていません。
1000個ほどの変数となります。

MASA_Hさんに解答して頂いた連想配列に挑戦中です。

お礼日時:2008/04/17 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!