• ベストアンサー

c++ 配列で最大要素数を100にしたプログラムのDisplay()は?

最大要素数が100の配列で社員リストを作っているのですが、入力の途中(たとえば5人分を入力した後で)それまでのリストを表示したいとします。そのときは、for(int i=0; i<MAX; i++)とするとMAX=100となっている為アウトプットがおかしくなってしまいます。こういう場合はMAXの代わりをどうしたらよいのでしょうか?宜しくお願いします。

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

  • ベストアンサー
  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

実際どういうコーディングをしているのか解らないので、テクニックの例をあげるらいしかできないのですが、構造体を初期化するときに未入力フラグを入れておきます。 #define UNKNOWN -1 #define MAX 100 /* 初期化ルーチン */ for (i=0;i<MAX;i++) emp[i].empid = UNKNOWN; /* リスト表示関数 */ for (i=0;i<MAX;i++) {  /* 未入力データはすっとばす */  if(emp[i].empid == UNKNOWN) continue;  /* 実際の表示処理 */ } 入力データをカウントするのも手ですが・・・。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

単純にこうでは? input = 5; for( int i = 0; i < input; i++ ) { ・ ・ ・

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

1.最初にループで100個の配列を空文字で初期化する 2.5人分入力する(5件だけ空文字以外になる 3.アウトプットはループで0からMAXの手前まで回すが、空文字はスキップする

関連するQ&A