Для этой лабораторной работы вы должны написать программу, которая сначала будет считывать значения высоты и веса ряда людей из файла values.dat. Создайте этот файл с помощью редактора, чтобы каждая строка содержала рост и соответствующий вес. Например, это может выглядеть примерно так:
60.0 125.0
48.0 100.0
и т. Д.
Затем создайте файл с именем stats.h, который включает в себя следующее:
#define MAXNUM 100
typedef struct person
{
double height;
double weight;
} Person;
//prototypes follow:
numPeople = getData(File *input, Person[] people, int MAXNUM);
getAverages(Person[] people, double *aveHeight, double *aveWeight, int numPeople)
getStandardDevs(Person[] people, double aveHeight, double aveWeight,
double *stdHeight, double *stdWeight, int numPeople);
Основная программа будет выглядеть примерно так:
#include <stdlib.h>
#include <stdio.h>
#include "stats.h"
void main(void)
{
char filename[] = "values.dat";
FILE *input;
Person people[MAXNUM];
int numPeople;
double aveHeight, aveWeight, stdHeight, stdWeight;
numPeople = getData(input, people, MAXNUM)
fclose(input);
getAverages(people, &aveHeight, &aveWeight, numPeople)
getStandardDevs(people, aveHeight, aveWeight, &stdHeight, &stdWeight, numPeople)
printf("The average height is %lf\n", aveHeight);
printf("The average weight is %lf\n", aveWeight);
printf("The standard deviation of the heights is %lf\n", stdHeight);
printf("The standard deviation of the weights is %lf\n", stdWeight);
}
Теперь напишите функции getData
, getAverages
и getStandardDevs
. Поместите их здесь после основной программы.
Формула для стандартного отклонения серии чисел x [1], x [2] ... x [n] равна
std = sqrt( sum( (x[i] - xbar)**2 ) / (n-1) )
где xbar - среднее значение x, n - количество выборок, а ** 2 - квадрат.
Помните, что для использования sqrt необходимо #include <math.h>
, а также добавить -lm в строку компиляции.
Текст выше - лабораторная работа, когда я пытаюсь создать 3 файла (values.dat, stats.h и основную программу), я сразу получаю сообщение об ошибке, когда пытаюсь скомпилировать,-gcc -o lab6 lab6.c -lm
Код для основной программы, который у меня сейчас есть,
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "stats.h"
void main(void)
{
char filename[] = "values.dat";
FILE *input;
Person people[MAXNUM];
int numPeople;
double aveHeight, aveWeight, stdHeight, stdWeight;
numPeople = getData(input, people, MAXNUM)
fclose(input);
getAverages(people, &aveHeight, &aveWeight, numPeople)
getStandardDevs(people, aveHeight, aveWeight, &stdHeight, &stdWeight, numPeople)
printf("The average height is %lf\n", aveHeight);
printf("The average weight is %lf\n", aveWeight);
printf("The standard deviation of the heights is %lf\n", stdHeight);
printf("The standard deviation of the weights is %lf\n", stdWeight);
}
int getData(File *input, Person[] people, int MAXNUM)
{
}
double getAverages(Person[] people, double *aveHeight, double *aveWeight, int numPeople)
{
}
double getStandardDevs(Person[] people, double aveHeight, double aveWeight, double *stdHeight, double *stdWeight, int numPeople)
{
}
Я добавил функции и попытался скомпилировать.
Является ли строка, которую я использовал для компиляции, правильной, используя -lm в конце строки.
Если кто-нибудь может мне помочь скомпилировать это, используя три файла, которые были бы замечательными, или если кто-то может помочь с любым изкод.
Ошибки, которые я получаю
In file included from lab6.c:4:0:
stats.h:9:9: error: unknown type name ‘File’
getData(File *input, Person[] people, int MAXNUM);
^
stats.h:9:31: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
getData(File *input, Person[] people, int MAXNUM);
^
stats.h:10:22: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
getAverages(Person[] people, double *aveHeight, double *aveWeight, int numPeopl
^
stats.h:11:26: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
getStandardDevs(Person[] people, double aveHeight, double aveWeight,
^
lab6.c: In function ‘main’:
lab6.c:14:15: warning: implicit declaration of function ‘getData’ [-Wimplicit-function-declaration]
numPeople = getData(input, people, MAXNUM);
^
lab6.c:16:3: warning: implicit declaration of function ‘getAverages’ [-Wimplicit-function-declaration]
getAverages(people, &aveHeight, &aveWeight, numPeople);
^
lab6.c:17:3: warning: implicit declaration of function ‘getStandardDevs’ [-Wimplicit-function-declaration]
getStandardDevs(people, aveHeight, aveWeight, &stdHeight, &stdWeight, numPeop
^
lab6.c: At top level:
lab6.c:25:13: error: unknown type name ‘File’
int getData(File *input, Person[] people, int MAXNUM)
^
lab6.c:25:35: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
int getData(File *input, Person[] people, int MAXNUM)
^
lab6.c:30:29: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
double getAverages(Person[] people, double *aveHeight, double *aveWeight, int n
^
lab6.c:35:33: error: expected ‘;’, ‘,’ or ‘)’ before ‘people’
double getStandardDevs(Person[] people, double aveHeight, double aveWeight, dou
^
Спасибо