dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

実際どういうコーディングをしているのか解らないので、テクニックの例をあげるらいしかできないのですが、構造体を初期化するときに未入力フラグを入れておきます。



#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;
 /* 実際の表示処理 */
}

入力データをカウントするのも手ですが・・・。
    • good
    • 0

単純にこうでは?



input = 5;

for( int i = 0; i < input; i++ ) {


    • good
    • 0

1.最初にループで100個の配列を空文字で初期化する


2.5人分入力する(5件だけ空文字以外になる
3.アウトプットはループで0からMAXの手前まで回すが、空文字はスキップする
    • good
    • 0

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