Я делаю функцию, которая будет вычислять статистику теста из t-теста из двух образцов и возвращать его значение. Однако я получаю неправильные результаты. Ранее я использовал scanf
и получил хорошие ответы, но он случайно перестал работать. Поэтому я решил переключиться на fgets
, что должно быть более надежным, однако возвращаемые значения неверны.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define VAL 10
double tstat(int x1,int x2,int s1,int s2,int n1,int n2);
int main()
{
char mean1[VAL] = {0};
char sd1[VAL] = {0};
char n1[VAL] = {0};
char mean2[VAL] = {0};
char sd2[VAL] = {0};
char n2[VAL] = {0};
printf("Enter mean 1: \n");
fgets(mean1, 10, stdin);
printf("Enter sd 1: \n");
fgets(sd1, 10, stdin);
printf("Enter sample size 1: \n");
fgets(n1, 10, stdin);
printf("Enter mean 2: \n");
fgets(mean2, 10, stdin);
printf("Enter sd 2: \n");
fgets(sd2, 10, stdin);
printf("Enter n2: \n");
fgets(n2, 10, stdin);
printf("t value is: %lf", tstat(atoi(mean1),atoi(mean2),atoi(sd1),atoi(sd2),atoi(n1),atoi(n2)));
}
double tstat(int x1,int x2,int s1,int s2,int n1,int n2)
{
double t = 0;
t = (x1 - x2)/(sqrt(pow(s1,2)/n1+pow(s2,2)/n2));
return t;
}
Например, настройка mean1 = 1.3
, sd1 = 0.5
, n1 = 22
; mean2 = 1.6
, sd2 = 0.3
, n2 = 24
должны дать значение -2,44, однако, добавив это значение в -1, следует #IND00
. Я предполагаю, что моя проблема в том, что либо я неправильно понимаю, как правильно использовать fgets
, либо что-то пошло не так с типами данных, хотя я новичок в C и не смог обнаружить никаких явных ошибок.