malloc을 사용하여 선언 된 동적 크기 (사용자가 지정) 배열의 산술 평균 및 공분산을 계산하는 프로그램을 작성했지만 프로그램에서 didn 예상 출력을 인쇄하지 마십시오. 따라서 배열 내의 값을보기 위해 중단 점을 사용했는데 값이 변하지 않는다는 것을 알았습니다.동적으로 할당 된 배열의 값에 액세스하거나 변경할 수 없습니다.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int n;
printf("enter n: \n");
scanf("%d", &n);
double sum = 0, m, spv;
double *x = (double *)malloc(sizeof(double)*n);
for (int i = 0; i < n; ++i)
{
scanf("%f", x[i]);
sum += x[i];
}
m = sum/n;
printf("Mittel = %f\n", m);
sum = 0;
for (int i = 0; i < n; ++i)
{
sum += pow((x[i] - m), 2);
}
spv = sum/(n - 1);
printf("SPV = %f\n", spv);
free(x);
return;
}
두 문제 둘 다 [* undefined behavior *] (https://en.wikipedia.org/wiki/Undefined_behavior)로 이어진다 : 첫 번째는 [ scanf'] (http://en.cppreference.com/w/c/io/fscanf)는 * 포인터 * 여야합니다. 두 번째는''% f "'가''float '을위한 것입니다. –
scanf에서 &를 사용하십시오 ("% f", &x[i]); – rsp
) "&"로 scanf 내에 코드를 작성했지만 실수로 삭제했습니다. 형식 지정자에 문제가있었습니다. 이제는 잘 작동합니다. –