年齢と身長,体重を保存する変数をメンバにもつ構造体を作成し、この構造体を利用して標準入力 ( キーボード )から入力された 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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
C言語に関する質問です
C言語・C++・C#
-
str系関数を使わずに二つの文字を結合する方法
C言語・C++・C#
-
C言語について教えてください。
C言語・C++・C#
-
-
4
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
5
関数から配列を返すには?
C言語・C++・C#
-
6
構造体から平均点を求める方法
C言語・C++・C#
-
7
c言語でポインタ変数を用いた配列の反転操作
C言語・C++・C#
-
8
プログラミングが分かりません。
C言語・C++・C#
-
9
最も高い身長を表示するプログラム
C言語・C++・C#
-
10
C言語初心者 構造体 課題について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
ワードで文字を入力する時の変...
-
*をユーザーが入力した数字の数...
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
入力値が1以下、かつ数字以外の...
-
プログラム(C)
-
java初心者です。入力されたの...
-
java 入力された文字列を数値に...
-
プログラミングの問題です 「金...
-
"scanf"でエンターで改行させな...
-
getchar()について 教えてくだ...
-
プログラミング初心者です。 Py...
-
c言語でひらがなのしりとりをで...
-
Userformの入力順序をタブオー...
-
C言語・標準入力でquitを入力で...
-
IF文で戻ることはできますか?...
-
scanf関数 バッファに残ったエ...
-
プログラムC言語の整数の約数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報
回答ありがとうございます。
配列から一人を探す所がまだよく分かりません。
if (人物列[h].身長 < 人物列[i].身長) h = i;
のあとは else ifを使うのですか?