年齢と身長,体重を保存する変数をメンバにもつ構造体を作成し、この構造体を利用して標準入力 ( キーボード )から入力された 5 人分の年齢,身長,体重をもとに,最も身長が高かった人の年齢,身長,体重と最も体重が軽かった人の年齢,身長,体重を表示するプログラムの作成。
途中まで作成したプログラム
#include<stdio.h>
typedef struct person{
int age;
double height;
double weight;
}person;
int main(void){
person num1,num2,num3,num4,num5,height1,height2,height3,height4,height5,weight1,weight2,weight3,weight4,weight5;
int i,j;
for (i=0; i<5; i++){
printf("1人目の年齢を入力してください。\n");
scanf("%d", &num1.age);
printf("1人目の身長を入力してください。\n");
scanf("%lf", &height1.height);
printf("1人目の体重を入力してください。\n");
scanf("%lf", &weight1.weight);
printf("2人目の年齢を入力してください。\n");
scanf("%d", &num2.age);
printf("2人目の身長を入力してください。\n");
scanf("%lf", &height2.height);
printf("2人目の体重を入力してください。\n");
scanf("%lf", &weight2.weight);
printf("3人目の年齢を入力してください。\n");
scanf("%d", &num3.age);
printf("3人目の身長を入力してください。\n");
scanf("%lf", &height3.height);
printf("3人目の体重を入力してください。\n");
scanf("%lf", &weight3.weight);
printf("4人目の年齢を入力してください。\n");
scanf("%d", &num4.age);
printf("4人目の身長を入力してください。\n");
scanf("%lf", &height4.height);
printf("4人目の体重を入力してください。\n");
scanf("%lf", &weight4.weight);
printf("5人目の年齢を入力してください。\n");
scanf("%d", &num5.age);
printf("5人目の身長を入力してください。\n");
scanf("%lf", &height5.height);
printf("5人目の体重を入力してください。\n");
scanf("%lf", &weight5.weight);
}
printf("最も身長が高い人は年齢:%d才,身長:%lfcm,体重%lfkgです。\n",num,height,weight);
printf("最も体重が軽い人は年齢:%d才,身長:%lfcm,体重%lfkgです。\n",num,height,weight);
return 0;
}
最も身長が高い人の年齢、身長、体重、最も体重が低い人の年齢、身長、体重の表示のさせ方が分かりません。
よろしくお願い時ます。
No.3ベストアンサー
- 回答日時:
人数分に配列化して情報を一つに纏めましょう
例)
person 人物列[人数];
似たような処理は繰り返しで処理しましょう
例)
for (i=0; i<人数; i++) {
_ printf("%d人目の身長", i+1);
_ scanf("%d", &(人物列[i].身長));
}
配列から一人を探すならば、端から比べていきましょう
例)
h = 0;
for (i=0; i<人数; i++) {
_ if (人物列[h].身長 < 人物列[i].身長) h = i;
}
printf("一番背が高いのは%d人目", h);
ご回答ありがとうございます。
配列や配列から一人を探す方法についての細かい記述が分かりやすかったです!ベストアンサーに選ばせていただきました。
No.4
- 回答日時:
これはちょっとひどいね。
①せっかく構造体を作ったのに、年齢、体重、身長を別々の
構造体に入れるのは何故?
構造体を何の目的で使うのか解ってないようなので
まずそこから学習しよう。
②5個のデータをバラバラの変数に入れるのは
5個くらいならまあ間違いじゃ無いが、データの入力にも
最大値を取り出すのにも長いコードが必要になり手間がかかる。
配列の使い方を覚えよう。
③複数のデータから最大値や最小値を取り出す手順は
基礎の基礎だ。
例えば身長が3個有って最大を求めるなら
身長max=身長1;
if (身長max<身長2) {
身長max=身長2
}
if (身長max<身長3) {
身長max=身長3
}
printf("身長max=%lf\n", 身長max);
これを5個や任意個に拡張するのは簡単。
配列を使えばループを使ってとてもシンプルに書ける。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
C言語scanf_sで何故か2回入力に...
-
VisualStudio2019のコードアナ...
-
4桁の数字以外を入力したらエラ...
-
cout関数を使っているのですが...
-
あるキーを押したら強制終了さ...
-
数字以外が入力されたらエラー...
-
8086のアセンブリで文字列の入...
-
プログラミング・C言語の配列(...
-
ループ中でのscanfおよびcin
-
小数か整数かを判定する方法
-
電卓の小数点
-
c言語が初心者です。教えていた...
-
Eclipseコンソール表示を、リセ...
-
Linuxで入力待ちなしkeyread関...
-
Date関数で書いた日付がおかしい
-
*をユーザーが入力した数字の数...
-
vba
-
Processingでのキーの同時入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語 逆ピラミッドの作り方
-
double型が正常に認識されてい...
-
ワードで文字を入力する時の変...
-
コマンドプロンプトからのEOFの...
-
Linuxで入力待ちなしkeyread関...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
cout関数を使っているのですが...
-
enterでループ終了
-
"scanf"でエンターで改行させな...
-
C言語でgetchar();が上手く使え...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報
回答ありがとうございます。
配列から一人を探す所がまだよく分かりません。
if (人物列[h].身長 < 人物列[i].身長) h = i;
のあとは else ifを使うのですか?