初心者の学生です。どうぞ宜しくお願いいたします。
従業員情報を入力、表示する課題を解いているのですが、データが無い時も0が表示されてしまいます。
教授からは「SIZEを使うから4回繰り返すのは当然だ」と言われ、他の変数(numなど)を作ったり if文やwhileループと組み合わせてみたのですが上手くいかず...条件文をどう書いたらいいかわからず、質問させていただきました。
表示(case 1)を選択した場合、SIZE分(4回分)ループされてしまっているためこれ以上追加ができません。
入力(case 2)を選択した場合も「0 0 0.00」という表示が出てしまいます。
お知恵をお借りできれば幸いです。お時間ありがとうございます。
ソースコード
C
1#include <stdio.h> 2#define SIZE 4 3 4struct Employee { 5 int id; 6 int age; 7 double salary; 8}; 9 10int main(void) { 11 int option, i; 12 13 struct Employee emp[SIZE] = { {0, 0, 0.00} }; 14 15 printf("---=== 従業員データ ===---\n\n"); 16 17 do { 18 printf("1. 従業員情報表示\n"); 19 printf("2. 従業員追加\n"); 20 printf("0. 終了\n\n"); 21 printf("上からメニューを選んでください: "); 22 23 scanf("%d",&option); 24 printf("\n"); 25 26 switch (option) { 27 case 0: 28 break; 29 30 case 1: // 従業員表示 31 printf("従業員ID 年齢 給料\n====== ======= ==========\n"); 32 for(i = 0; i < SIZE; i++) { 33 printf("%6d%9d%11.2lf\n", emp[i].id, emp[i].age, emp[i].salary); 34 } 35 printf("\n"); 36 break; 37 38 case 2: // 従業員追加 39 printf("従業員追加\n===============\n"); 40 if(i >= SIZE) { 41 printf("\n"); 42 printf("ERROR: 登録できる最大数に達しました\n\n"); 43 break; 44 } 45 printf("従業員IDを入力してください: "); scanf("%d", &emp[i].id); 46 printf("年齢を入力してください: "); scanf("%d", &emp[i].age); 47 printf("給料を入力してください: "); scanf("%lf", &emp[i].salary); 48 printf("\n"); 49 i++; 50 break; 51 52 default: 53 printf("ERROR: 予期せぬオプションです: もう一度\n\n"); 54 } 55 56 } while (option != 0); 57 58 printf("プログラムを終了します。\n"); 59 return 0; 60}
出力
試したこと
- forループ内の継続条件式用に別の変数(num)を作りインクリメントを試みた ⇒ 上手くできませんでした
- ①if(emp[i].id == 0)、②while(num >= SIZE)、③forと入れ子にした ⇒ 上手くできませんでした
補足情報
このサイトでコンパイルしました。
https://www.onlinegdb.com/online_c_compiler
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/19 05:28