C言語の構造体についてです。
構造体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'が未解決」と出てしまいます。
どこを直してよいのかが全く分かりません。
ご教授お願い致します。