Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
o分配VLAfloat数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,n是main的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,f是main(int n,char**_C_Arrays_Floating Point_Median - Fatal编程技术网

o分配VLAfloat数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,n是main的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,f是main(int n,char**

o分配VLAfloat数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,n是main的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,f是main(int n,char**,c,arrays,floating-point,median,C,Arrays,Floating Point,Median,o分配VLAfloat数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,n是main的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,f是main(int n,char**f)的另一个参数,但也用作f=fopen(fname,“r”)中的文件*-这里有一个不注意编译器警告的严重案例@xLokos您不使用它们,因此请删除它们(intmain(void))或给它们起通常的名称argc和argv。此外,它们通常不会被写



o分配VLA
float数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,
n
main
的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,
f
main(int n,char**f)
的另一个参数,但也用作
f=fopen(fname,“r”)中的
文件*
-这里有一个不注意编译器警告的严重案例@xLokos您不使用它们,因此请删除它们(
intmain(void)
)或给它们起通常的名称
argc
argv
。此外,它们通常不会被写入。一个浮点只能得到六个SIGFIG,因此-321.653992很可能是最接近-321.654的可表示值。第一次读取计算有多少个值。这用于分配VLA
浮点数组[n]的大小正确。@JonathanLeffler啊,好吧,我很困惑,因为出于某种原因,
n
main
的第一个参数;我甚至没有注意到这一点。《可怕》并没有真正开始描述这里的一些编码技巧。请注意,
f
main(int n,char**f)
的另一个参数,但也用作
f=fopen(fname,“r”)中的
文件*
-这里有一个不注意编译器警告的严重案例@xLokos您不使用它们,因此请删除它们(
intmain(void)
)或给它们起通常的名称
argc
argv
。此外,它们通常不会被写入。一个浮点数只能得到六个符号,因此-321.653992很可能是最接近-321.654的可表示值。我不能说它看起来不整洁。但即使使用此代码和输入
123.456 999.999 564.312-654.321 7894.32
它也会产生输出
Sample size=5 Minimum=-654.320984 Maximum=7894.319824 Mean=1785.553101 Median=564.31212标准偏差=3580.003174
这也是我从您的数据中得到的:
Sample size=5 Minimum=-654.320984 Maximum=7894.319824平均值=1785.553101中位数=564.312012标准偏差=3580.003174
。考虑到投入,这是合理的。试图从只能容纳6-7位的值中获取10位有效数字是徒劳的,但是
%f
的默认精度是小数点后6位,所以这就是要打印的内容。所以你认为我的导师会接受整个代码吗?我刚刚用GCC检查了一下,stdev的输出与此略有不同。我的卡西欧展示了
样本stdev=3469.18976
顺便说一句,谢谢你的帮助和时间,我很感激。我不能说它看起来不整洁。但即使使用此代码和输入
123.456 999.999 564.312-654.321 7894.32
它也会产生输出
Sample size=5 Minimum=-654.320984 Maximum=7894.319824 Mean=1785.553101 Median=564.31212标准偏差=3580.003174
这也是我从您的数据中得到的:
Sample size=5 Minimum=-654.320984 Maximum=7894.319824平均值=1785.553101中位数=564.312012标准偏差=3580.003174
。考虑到投入,这是合理的。试图从只能容纳6-7位的值中获取10位有效数字是徒劳的,但是
%f
的默认精度是小数点后6位,所以这就是要打印的内容。所以你认为我的导师会接受整个代码吗?我刚刚用GCC检查了一下,stdev的输出与此略有不同。我的卡西欧展示了
示例stdev=3469.18976
顺便说一句,感谢您的帮助和时间,我非常感谢。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int compare (const void * a, const void * b)
{
  float fa = *(float*) a;
  float fb = *(float*) b;
  return (fa > fb) - (fa < fb);
}



//median calculations//
float median1(float[],int); 
float median1(float array[],int n) 
{  
qsort(array, n, sizeof(float), compare);

if(n%2==0)  
    return (array[n/2]+array[n/2-1])/2;  
else  
    return array[n/2];  
}



float x,l=~(257<<23),a,s,t,median;
main(int n,char**f)

{
char fname[20];
int i;
a=-l;

printf("Please type the file name with an extension (.txt)\n");
scanf("%s", fname);


f=fopen(fname,"r");
for(n=0;fscanf(f,"%f",&x)>0;n++,s+=x,x<l?l=x:0,x>a?a=x:0,t+=x*x);

float array[n];

fseek (f, 0, SEEK_SET);

for (i=0; i<n; i++) 
        {
            fscanf (f, "%f", &(array[n]));
        }

median=median1(array,n);  

printf("Sample size = %d\n", n);
printf("Minimum = %f\n", l);
printf("Maximum = %f\n", a);
printf("Mean = %f\n", s/n);
printf("Median = %f\n",median);
printf("Standard deviation = %f\n", sqrtf(t/n));

return 0;
} 
fscanf (f, "%f", &(array[n]));
fscanf (f, "%f", &(array[i]));
gcc -O3 -g -std=c11 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes \
    -Wold-style-definition -Werror med.c -o med
1.2
3.5
2.9
4.6
Sample size = 4
Minimum = 1.200000
Maximum = 4.600000
Mean = 3.050000
Median = 3.200000
Standard deviation = 3.288617
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int compare(const void *a, const void *b);

int compare(const void *a, const void *b)
{
    float fa = *(float *) a;
    float fb = *(float *) b;
    return (fa > fb) - (fa < fb);
}

// median calculations//
float median1(float[], int);

float median1(float array[], int n)
{
    qsort(array, n, sizeof(float), compare);

    if (n % 2 == 0)
        return (array[n / 2] + array[n / 2 - 1]) / 2;
    else
        return array[n / 2];
}

int main(void)
{
    float x;
    float l = ~(257 << 23);
    float a;
    float s = 0.0;
    float t = 0.0;
    float median;
    int n;
    FILE *f;
    char fname[20];
    int i;
    a = -l;

    printf("Please type the file name with an extension (.txt)\n");
    scanf("%s", fname);


    f = fopen(fname, "r");
    if (f == 0)
    {
        fprintf(stderr, "Failed to open file %s for reading\n", fname);
        return 1;
    }

    for (n = 0; fscanf(f, "%f", &x) > 0; n++)
    {
        s += x;
        if (x<l) l = x;
        if (x>a) a = x;
        t += x * x;
    }

    float array[n];

    fseek(f, 0, SEEK_SET);

    for (i = 0; i < n; i++)
    {
        fscanf(f, "%f", &(array[i]));
    }

    fclose(f);

    median = median1(array, n);

    printf("Sample size = %d\n", n);
    printf("Minimum = %f\n", l);
    printf("Maximum = %f\n", a);
    printf("Mean = %f\n", s / n);
    printf("Median = %f\n", median);
    printf("Standard deviation = %f\n", sqrtf(t / n));

    return 0;
}