実現したいこと
身長を入力して、該当するものがあれば'*'をつけるというプログラムを作りたい。
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
前提
ここに質問の内容を詳しく書いてください。
1つ目の部分までしかいかなくて175などの1つ目以降の値を読み取ってくれない。171と入力したら、2つ'*'が表示されるプログラムを作りたいが、そこの部分がわからない。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード ```/* 構造体配列を線形探索 */ #include <stdio.h> /*--- 身体検査データ型 ---*/ typedef struct { char name[20]; /* 氏名 */ int height; /* 身長 */ double vision; /* 視力 */ int weight; /* 体重 */ char flag; /* 発見フラグ(発見時に「*」を代入) */ } PhysCheck; /* * 要素数「n」の構造体配列「a」から構造体メンバ「height」が探索キー「key」と一致する要素を線形探索 * 見つかった場合は「1」、見つからなかった場合は「0」を返却すること(つまり、見つかった場合は「result」に「1」を代入) */ int search(PhysCheck a[], int n, int key){ int i, result = 0; /* この部分を実装せよ ↓(ここから) */ for(i = 0; i < n; i++){ if(a[i].height == key){ a[i].flag = '*'; result = 1; } return result; } } int main(void) { int i, nx, ky, idx; PhysCheck x[] = { {"AKASAKA Tadao", 171, 0.3, 50,' '}, {"KATOH Tomiaki", 173, 0.7, 75,' '}, {"SAITOH Syouji", 175, 2.0, 95,' '}, {"TAKEDA Shinya", 171, 1.5, 60,' '}, {"NAGAHAMA Masaki", 168, 0.4, 55,' '}, {"HAMADA Tetsuaki", 174, 1.2, 100,' '}, {"MATSUTOMI Akio", 169, 0.8, 88,' '} }; nx = (sizeof(x) / sizeof(x[0])); /* 人数 */ puts("■□■ 身体検査一覧表 ■□■"); puts(" 氏名 身長 視力 体重"); puts("----------------------------------"); for (i = 0; i < nx; i++){ printf("%-18.18s%4d%5.1f%5d\n", x[i].name, x[i].height, x[i].vision, x[i].weight); } printf("\n探す値(身長) : "); scanf("%d", &ky); idx = search(x, nx, ky); /* 配列xから値がkyである要素を線形探索 */ puts(""); if (idx == 0){ puts("一致するデータは存在しません。"); }else{ puts("■□■ 身体検査一覧表(探索結果) ■□■"); puts(" 氏名 身長 視力 体重 一致"); puts("----------------------------------------"); for (i = 0; i < nx; i++){ printf("%-18.18s%4d%5.1f%5d%6c\n", x[i].name, x[i].height, x[i].vision, x[i].weight, x[i].flag); } } return 0; } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
実行時の出力内容を提示しよう

回答2件
あなたの回答
tips
プレビュー