Не удается найти основной код для расчета гибкой статистики - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть код, где он хочет прочитать, какую операцию он хочет сделать, а затем вычислить числа, используя операцию. У меня есть код библиотеки и заголовок, но основной код, я не знаю, что реализовать в теле. У меня есть скелетный код, но я рисую пробел на том, что еще мне нужно сделать.

Если это поможет, я пытаюсь выполнить операцию:

./statistics mean 10 20 30

иответ должен быть: 20.0

Заголовок библиотеки:

#ifndef MY_LIBRARY_H
#define MY_LIBRARY_H

float OP_MEAN(int size, float * values);
float OP_MAX(int size, float * values);
float OP_SD(int size, float * values);

#endif

Код библиотеки:

float OP_MEAN(int size, float * values)
{
  int i;
  float sum = 0.0;
  for(i = 0; i < size; i++)
  {
    sum += values[i];
  }
  return sum/n;
}

float OP_MAX(int size, float * values)
{
  int i;
  float maximum = 0.0;
  for(i = 0; i < size; i++)
  {
    if (values[i] > maximum)
    {
      maximum = values[i];
    }
  }
  return maximum;
}

float OP_SD(int size, float * values)
{
  float mean = OP_MEAN(size, values);
  float sum = 0.0, un_sqrt_sd = 0.0;
  int i;
  for(i = 0; i < size; i++)
  {
    sum += pow(double(values[i] - mean), double(2));
  }
  un_sqrt_sd = (float) sum / (size - 1);
  return (float) sqrt(double(un_sqrt_sd));
}

Основной код:

#include <stdio.h>
#include "my_lib.h"


// define the operations as enum here
enum operations{
  OP_MEAN
  OP_MAX
  OP_SD
};

int main(int argc, char ** argv){

//parse command line arguments

  enum operations op;
  // 1. find the operator
  if (strcmp(argv[1], "max") ...){ // check with man strcmp
    op = OP_MAX;
  }...
  // 2. define an array with the necessary size
  // 3. load numbers using my_atoi()
  float (*fp)(int size, float * values); // declared function pointer variable

  // use a switch to set the function pointer
  switch(op_var){
    case(OP_MAX):
      fp = ... // set the function pointer
  }

  // invoke the function pointer
  float result = fp(size, array)
  printf("%.1f\n", result);

  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...