構造体employee 型の変数を配列で5つ宣言し、BMI 値、肥満率、理想体重を求めた後、BMI 値の昇順でソートをかけ、表示をするというプログラムを作成したいのですが、うまくいきません。
・引数は、配列(構造体employee []型 または、構造体employee *型)
・戻り値は、なし。
・関数名は、sort
・番号はint型
・名前はchar型
・身長・体重・BMI値・肥満率・理想体重はdouble型
という指定があります。
#include <stdio.h>
#define N 5
struct employee{
int number;
char name[20];
double height;
double weight;
double bmi;
double fat;
double ideal;
};
void bmi_fat(struct employee *);
void sort(struct employee []);
int main(void)
{
int i;
struct employee std[N]={
{1, "oohata", 173.0, 60.0, 0.0, 0.0, 0.0},{2, "suzuki", 168.8, 60.2, 0.0, 0.0, 0.0},
{3, "satou", 168.2, 80.5, 0.0, 0.0, 0.0},{4, "tanaka", 162.5, 45.2, 0.0, 0.0, 0.0},
{5, "yamada", 155.3, 55.7, 0.0, 0.0, 0.0}
};
for(i=0; i<N; i++){
sort(std);
bmi_fat(&std [i]);
}
for(i=0; i<N; i++){
sort(std);
printf("社員番号:%d番\n", std[i].number);
printf("名前:%s\n", std[i].name);
printf("身長:%2.1lfcm\n", std[i].height);
printf("体重:%2.1lfkg\n", std[i].weight);
printf("BMI:%2.1lf\n", std[i].bmi);
printf("肥満率:%2.1lf%\n", std[i].fat);
printf("理想体重:%2.1lfkg\n", std[i].ideal);
}
return 0;
}
void sort(struct employee a[])
{
int i, j;
struct employee x;
a->bmi=a->weight/((a->height/100.0)*(a->height/100.0));
a->ideal=(a->height-100)*0.9;
a->fat=a->weight/a->ideal*100.0;
for(i=0; i<N-1; i++){
for(j=0; j<N-i-1; j++){
if(a[j].bmi>a[j+1].bmi){
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
}
}
}
以上が作成済みのプログラムなのですが、「外部シンボル'_bmi_fat'が未解決」と出てしまいます。
どこを直してよいのかが全く分かりません。
ご教授お願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
sort関数の中に、BMIを求める機能を含んでいるように見えます。
その部分をbmi_fat関数とすればよいでしょう。
bmi_fat関数はBMIを求めるだけ、
sort関数はデータをソートするだけ、というように、
関数はその名前にふさわしい仕事だけをするように書けばよいでしょう。
ところで、
>for(i=0; i<N; i++){
>sort(std);
>printf("社員番号:%d番\n", std[i].number);
結果を出力するとき、ループの中で毎回ソートする必要が本当にありますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜ、C++の標準ヘッダをインク...
-
#include "fstream.h"
-
switch文のエラーについて
-
VC++で文字列から任意の文字を...
-
C++での <iostream.h>と<iostre...
-
C言語のポインターで詰まっている
-
ハミング符号の解読について
-
gccでコンパイル時のエラー
-
std::wstringのメモリリークに...
-
VHDLのvector
-
VxWorks 6.4ソケット接続につい...
-
string型のフォーマット書式指...
-
【C++】ヘッダ内でstringを格納...
-
getlineについて
-
enumの値から定義名を文字列化...
-
C++コンパイラーのincludeのエ...
-
C++で、テキストファイルを一行...
-
VHDLのsignedとunsignedの違いは?
-
メインプログラムに#include <a...
-
clock関数のコンパイルエラーで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
なぜ、C++の標準ヘッダをインク...
-
#define中の#のエスケープ
-
C++で、テキストファイルを一行...
-
C言語のエラーを修正したい
-
gccでコンパイル時のエラー
-
C言語のポインターで詰まっている
-
#include "fstream.h"
-
リモートデスクトップの接続元I...
-
構造体配列のvectorへの変換と...
-
VS2019でofstreamが未定義になる
-
JPEGやPNGが読めるLoadImage関数
-
VHDLのsignedとunsignedの違いは?
-
構造体に決められた文字列を入...
-
std::wstringのメモリリークに...
おすすめ情報