Proc means에 대한 문제입니다.
파란
proc means를 이용한 c++프로그램인데 잘 풀리지가 않아서 도움을 요청합니다.
혹시 아시는 분은 과정과 답을 올려주시기 바랍니다.
#include stdio.h
#include math.h
#define n 10 // 최대 가능 변수의 갯수
#define m 1000 // 최대 가능 관측치의 갯수
void fread_data (file *fp, double data[][n], int *m, int *n);
void output(file *fp2,double *mean, double *std, double *maxi, double *mini, int *m, int *n);
void mean_std(double data[][n], double *mean, double *std, int *m, int *n);
//void max_min(double data[][n], double *maxi, double *mini, int *m, int *n);
void main()
{
double data[m][n];
double mean[n]={0.}, std[n]={0.}, maxi[n]={0}, mini[n]={0};
file *fp = fopen(data.txt,r);
if (fp == null){
printf(오류: 파일 존재하지 않음\n);
return;
}
file *fp2 = fopen(result.txt,w);
int m, n;
// 데이터 입력 함수
// fp : 원데이터, data : 데이터를 저장하는 1000*10의 이차원 배열
// m : 실제 관측치의 갯수 n : 실제 변수의 갯수
fread_data(fp,data, &m, &n);
// 결과물 파일 출력
// fp2 : 새로 쓸 파일
// m : 실제 관측치의 갯수 n : 실제 변수의 갯수
mean_std(data, mean, std, &m, &n);
output(fp2, mean, std, maxi, mini, &m, &n);
fclose(fp);
fclose(fp);
fclose(fp2);
}
// 데이터는 직사각형 형태임(모든 변수의 관측치의 개수는 같음)
// 파일의 첫줄부터 데이터가 나오는 경우
// 파일의 첫줄에 변수명이 업음
// 결측치가 없다고 가정
// 파일을 끝까지 읽어서 관측치의 갯수를 구함
void fread_data (file *fp, double data[][n], int *m, int *n) {
file *fp1 = fopen(data.txt,r);
int i,j,temp1;
char temp2[m];
// 관측치의 갯수를 읽어들임
// m 관측치(sas : obs)의 갯수
*m = 0;
while(fscanf(fp,%d,&temp1) != eof){
if(fgets(temp2,1000,fp) != \n) {
*m += 1;
}
}
//변수의 갯수를 지정
printf(변수의 갯수를 지정하세요:);
scanf(%d,n);
// 텍스트파일로 부터 데이터를 data배열에 저장하는 단계
for(i=0;i*m;i++) {
for(j=0;j*n;j++)
fscanf(fp1,%lf,&data[i][j]);
}
fclose(fp1);
}
void output(file *fp2,double *mean, double *std, double *maxi, double *mini, int *m, int *n){
int i;
for(i=0;i*n;i++) {
fprintf(fp2, means 프로시져 \n\n);
fprintf(fp2, 분석 변수 : std%d \n\n,i);
fprintf(fp2, n 평균 표준편차 최대값 최소값 \n);
fprintf(fp2, --------------------------------------------------------------\n);
fprintf(fp2, %d %6.2lf %6.2lf %d %d \n,*m,mean[i],std[i],maxi[i], mini[i]);
fprintf(fp2, --------------------------------------------------------------\n);
fprintf(fp2,\n\n);
}
}
// 평균계산 함수
// 입력변수
//data[][]: 2차원 배열
//m: 최대 가능한 행의 개수, 최대 가능한 관측치의 갯수
//n: 최대 가능한 변수의 개수
//
// 출력변수
//mean: 1 차원배열, 계산된 평균이 저장되어 있음
//m: 실제 데이터의 관측치의 갯수
//n: 실제 데이터의 변수의 갯수
void mean_std(double data[][n], double *mean, double *std, int *m, int *n){
int i,j;
for(i=0;i*m;i++) {
for(j=0;j*n;j++){
mean[j] += data[i][j];
std[j] += data[i][j]*data[i][j];
}
}
for(i=0;i*n;i++){
mean[i] /= *m;
std[i] = sqrt(std[i] / *m - pow(mean[i],2.));
}
}
// 최대와 최소값을 구하는 함수
// 여기부터는 자력으로 해보세요.^^
void max_min(double data[][n], double *maxi, double *mini, int *m, int *n){
//
}*/