お世話になっております。
C言語についての質問になります。
現在体重と身長を入力して肥満度を表すコードを作成しています。
男性のみになっておりますがscanf関数から自身の性別,年齢,身長,体重を入力すると
肥満度を表すコードをなっておりますが実行すると
・性別を入力した後にエンタキーを押すと空欄のみが入力される
・全項目入力後の計算結果で肥満度がおかしな数字になっている
・あなたは○○ですと診断するhikaku関数にたどり着いていない?
・*datab->のないようをみると性別、空欄に入力した数値,年齢,体重の数値が入っている
・・・と色々エラーが発生しております。
以上の問題に対してアドバイスよろしくお願いします。
C
1コード 2// ConsoleApplication18.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 3// 4 5#include "stdafx.h" 6#include<stdio.h> 7#include<stdlib.h> 8 9/*入力者のデータを入れる構造体*/ 10struct yourbmi { 11 /*性別*/ 12 int sex; 13 /*年齢*/ 14 int age; 15 /*体重*/ 16 double weight; 17 /*身長*/ 18 double height; 19}; 20/*入力されたデータをもとにBMI=体重(Kg)÷身長(m)÷身長(m)を計算する関数*/ 21double calculator(struct yourbmi *data); 22/*入力したデータを表示する関数*/ 23void typedata(struct yourbmi* data); 24/*入力したデータを比較して性別と年齢で結果を変える*/ 25void hikaku(struct yourbmi* hikaku , double result); 26 27int main() 28{ 29 //BMIを入れる変数 30 double sum = 0; 31 struct yourbmi data; 32 typedata(&data); 33 sum = calculator(&data); 34 hikaku(&data , sum); 35 36 return 0; 37} 38 39void typedata(struct yourbmi* data) { 40 printf("性別 男:1 女:2 "); 41 scanf_s("%d\n", &(data->sex)); 42 printf("年齢:"); 43 scanf_s("%d\n", &(data->age)); 44 printf("体重:"); 45 scanf_s("%lf\n", &(data->weight)); 46 printf("身長:"); 47 scanf_s("%lf\n", &(data->height)); 48} 49 50double calculator(struct yourbmi *data) { 51 double result = 0; 52 result = (data->weight / data->height) / (data->height); 53 printf("%f", result); 54 return result; 55} 56 57void hikaku(struct yourbmi* data , double result) { 58 //性別が男だった場合 59 if (data->sex = 1 ) { 60 //15~17歳だった場合 61 if (data ->age >= 15 &&data ->age <= 17) { 62 //BMIが7以下だった場合 63 if(result >= 0 && result <= 7) { 64 printf("あなたはやせ型です。"); 65 }else 66 //BMIが8以上23以下だった場合 67 if (result >= 8 && result <= 23) { 68 printf("あなたは標準型です。"); 69 } 70 }else 71 //BMIが24以上27以下だった場合 72 if (result >= 24 && result <= 27) { 73 printf("あなたは軽肥満型です。"); 74 } 75 else 76 //BMIが28以上だった場合 77 if (result >= 28) { 78 printf("あなたは肥満型です。"); 79 } 80 //18~39歳だった場合 81 if (data->age >= 18 && data->age <= 39) { 82 //BMIが10以下だった場合 83 if (result >= 0 && result <= 10) { 84 printf("あなたはやせ型です。"); 85 } 86 else 87 //BMIが11以上21以下だった場合 88 if (result >= 11 && result <= 21) { 89 printf("あなたは標準型です。"); 90 } 91 } 92 else 93 //BMIが22以上26以下だった場合 94 if (result >= 22 && result <= 26) { 95 printf("あなたは軽肥満型です。"); 96 } 97 else 98 //BMIが27以上だった場合 99 if (result >= 27) { 100 printf("あなたは肥満型です。"); 101 } 102 //40~59歳だった場合 103 if (data->age >= 40 && data->age <= 59) { 104 //BMIが0以上11以下だった場合 105 if (result >= 0 && result <= 11) { 106 printf("あなたはやせ型です。"); 107 } 108 else 109 //BMIが12以上22以下だった場合 110 if (result >= 12 && result <= 22) { 111 printf("あなたは標準型です。"); 112 } 113 } 114 else 115 //BMIが23以上27以下だった場合 116 if (result >= 23 && result <= 27) { 117 printf("あなたは軽肥満型です。"); 118 } 119 else 120 //BMIが28以上だった場合 121 if (result >= 28) { 122 printf("あなたは肥満型です。"); 123 } 124 //60歳以上だった場合 125 if (data->age >= 60) { 126 //BMIが0以上13以下だった場合 127 if (result >= 0 && result <= 13) { 128 printf("あなたはやせ型です。"); 129 } 130 else 131 //BMIが14以上24以下だった場合 132 if (result >= 14 && result <= 24) { 133 printf("あなたは標準型です。"); 134 } 135 } 136 else 137 //BMIが25以上29以下だった場合 138 if (result >= 25 && result <= 29) { 139 printf("あなたは軽肥満型です。"); 140 } 141 else 142 //BMIが30以上だった場合 143 if (result >= 30) { 144 printf("あなたは肥満型です。"); 145 } 146 } 147}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。