Okay so I'm almost finished, but when compiling, it says there is an error on lines 10 & 28. Not exactly sure how to fix it, so any help would be nice.
Code:
#include <stdio.h>
#define MAXDATA 1000 /*Max number of lines allowed*/
#define FALSE 0
#define TRUE 1
int read_data(char[], float[], float[]);
float compute_bmi(float, float);
void sort(float[], float[], int);
float mean(float[], int);
float median(float[], int, int);
int main() {
float height[MAXDATA];
float weight[MAXDATA];
float bmi[MAXDATA];
float height_sorted[MAXDATA]; /*sorted = in order from least-greatest*/
float weight_sorted[MAXDATA];
float bmi_sorted[MAXDATA];
float mean1, mean2, mean3;
float median1, median2, median3;
read_data("file.dat", height, weight);
bmi = compute_bmi(height, weight);
mean1 = mean(height, MAXDATA);
mean2 = mean(weight, MAXDATA);
mean3 = mean(bmi, MAXDATA);
sort(height, height_sorted, MAXDATA);
sort(weight, weight_sorted, MAXDATA);
sort(bmi, bmi_sorted, MAXDATA);
median1 = median(height_sorted, MAXDATA, TRUE);
median2 = median(weight_sorted, MAXDATA, TRUE);
median3 = median(bmi_sorted, MAXDATA, TRUE);
FILE *out_fp;
out_fp = fopen("file.report", "w");
fprintf(out_fp,"\nBMI Calculator Report \n");
fprintf(out_fp,"\nHeight\n");
fprintf(out_fp," mean = %f median = %f \n", mean1, median1);
fprintf(out_fp,"\nWeight\n");
fprintf(out_fp," mean = %f median = %f \n", median2, median2);
fprintf(out_fp,"\nBMI\n");
fprintf(out_fp," mean = %f median = %f \n", mean3, median3);
fclose(out_fp);
return 0;
}
int read_data (char file[], float height[], float weight[]) {
FILE *fp;
int i;
int numdata;
fp = fopen(file, "r");
fscanf(fp, "%d", &numdata);
if(numdata > MAXDATA){
printf("Error");
return 0;
}
float compute_bmi(float height, float weight) {
float bmi;
bmi = (weight / (height*height)) * 730;
return 0;
}
float mean(float x[], int len) {
int i;
float ans = 0.0;
for (i=0; i<len; i++) {
ans += x[i];
}
ans = ans / len;
return ans;
}
void sort(float x[], float y[], int len) {
int i;
int done = FALSE;
int swapped;
float tmp;
for (i=0; i<len; i++) {
y[i] = x[i];
}
while (!done) {
swapped = FALSE;
for (i=0; i<(len-1); i++) {
if (y[i] > y[i+1]) {
tmp = y[i];
y[i] = y[i+1];
y[i+1] = tmp;
swapped = TRUE;
}
}
if (!swapped) {
done = TRUE;
}
}
float median(float x[], int len, int sorted) {
float y[len];
float ans;
if (!sorted) {
sort(x, y, len);
if (len % 2) {
ans = y[ (len-1) / 2 ];
} else {
ans = (y[ len/2 ] + y[ len/2 - 1 ]) / 2.0;
}
} else {
if (len % 2) {
ans = x[ (len-1) / 2 ];
} else {
ans = (x[ len/2 ] + x[ len/2 - 1 ]) / 2.0;
}
}
return ans;
}
Comment