Домашняя программа, которая читает входные данные из другого файла на C - PullRequest
0 голосов
/ 24 октября 2019

Для этой лабораторной работы вы должны написать программу, которая сначала будет считывать значения высоты и веса ряда людей из файла 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
                                 ^

Спасибо

1 Ответ

0 голосов
/ 24 октября 2019

File не совпадает с FILE. <stdio.h> определяет FILE, который вы должны использовать.

Я не знаю, если исправление этой ошибки (измените ваши File ссылки на FILE везде) заставит вас скомпилировать так, как таммогут быть другие ошибки, которые скрыты этим. Однако это будет первой ошибкой, которая будет исправлена ​​при компиляции кода.

...