편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2023.04.05

    C언어 헤더파일에서 int& x를 어떻게 사용해야 하는지 모르겠습니다.


    소스.c 파일에 있는 배열의 최솟값, 최댓값, 합, 평균, 분산, 표준편차를 BigArray.c에서 구하여 소스.c에 전달하고 싶습니다. 함수에서 여러개를 전달하려면 int& x를 사용하는 것으로 알고 있습니다. 다른 파일에서 사용하려면 어떻게 해야합니까?

    소스.c

    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include "BigArray.h"
    #define Data_Output_File "Data_output.txt"
    void arrayStatistics_basicArray(FILE* fout)
    {
        int num_data = 10, min, max;
        double sum, avg, var, std_dev;
        int data_array[MAX_NUM_DATA] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
        printf("\nArrayStatistics_basicArray .....\n");
        fprintf(fout, "\nArrayStatistics_basicArray .....\n");
        getArrayStatistics(data_array, num_data, min, max, sum, avg, var, std_dev);
        printf("min(% 5d), max(% 5d), sum(% 7.2lf), avg(% 7.2lf), var(% 7.2lf),std_dev(% 7.2lf)\n", min, max, sum, avg, var, std_dev);
        printf("arrayStatistics_basicArray - completed. Result is also stored in output file(% s).\n", Data_Output_File);
    }
    int main(void)
    {
        FILE* fout;
        fout = fopen(Data_Output_File, "w");
        if (fout == NULL)
        {
            printf("Error in creation of %s !!\n", Data_Output_File);
            return -1;
        }
        arrayStatistics_basicArray(fout);
        fclose(fout);
    }
    

    BigArray.h

    #pragma once
    #ifndef BIG_ARRAY_H 
    #define BIG_ARRAY_H
    void getArrayStatistics(int* array, int num_data, int& min, int& max, double& sum, double& avg, double& var, double& std_dev);
    #endif
    

    BigArray.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void getArrayStatistics(int* array, int size, int& min, int& max, double& sum, double& avg, double& var, double& std_dev)
    {
        double sum_sq_diff = 0.0;
    
        for (int i = 0; i < size; i++) 
        {
            sum += array[i];
        }
        avg = sum / size; 
        for (int i = 0; i < size; i++) 
        {
            sum_sq_diff += (array[i] - avg) * (array[i] - avg);
        }
        var = sum_sq_diff / size; 
        std_dev = sqrt(var); 
    }
    

    오류

    오류(활성)  E0141   본문이 있는 경우 명명되지 않은 프로토타입 매개 변수를 사용할 수 없습니다. (줄6)
    오류(활성)  E0018   ')'가 필요합니다. (줄6)  
    오류  C2143   구문 오류: ')'이(가) '&' 앞에 없습니다. (줄6)
    오류  C2143   구문 오류: '{'이(가) '&' 앞에 없습니다. (줄6)
    오류  C2059   구문 오류: '&' (줄6)
    오류  C2059   구문 오류: ')'   (줄6)
    오류(활성)  E0020   식별자 "sum"/"avg"/"var"/"std_dev"이(가) 정의되어 있지 않습니다. 
    
  • 프로필 모루라님의 편집
    날짜2023.04.04

    C언어 헤더파일에서 int& x를 어떻게 사용해야 하는지 모르겠습니다.


    소스.c 파일에 있는 배열의 최솟값, 최댓값, 합, 평균, 분산, 표준편차를 BigArray.c에서 구하여 소스.c에 전달하고 싶습니다. 함수에서 여러개를 전달하려면 int& x를 사용하는 것으로 알고 있습니다. 다른 파일에서 사용하려면 어떻게 해야합니까?

    소스.c

    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include "BigArray.h"
    #define Data_Output_File "Data_output.txt"
    void arrayStatistics_basicArray(FILE* fout)
    {
        int num_data = 10, min, max;
        double sum, avg, var, std_dev;
        int data_array[MAX_NUM_DATA] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
        printf("\nArrayStatistics_basicArray .....\n");
        fprintf(fout, "\nArrayStatistics_basicArray .....\n");
        getArrayStatistics(data_array, num_data, min, max, sum, avg, var, std_dev);
        printf("min(% 5d), max(% 5d), sum(% 7.2lf), avg(% 7.2lf), var(% 7.2lf),std_dev(% 7.2lf)\n", min, max, sum, avg, var, std_dev);
        printf("arrayStatistics_basicArray - completed. Result is also stored in output file(% s).\n", Data_Output_File);
    }
    int main(void)
    {
        FILE* fout;
        fout = fopen(Data_Output_File, "w");
        if (fout == NULL)
        {
            printf("Error in creation of %s !!\n", Data_Output_File);
            return -1;
        }
        arrayStatistics_basicArray(fout);
        fclose(fout);
    }
    

    BigArray.h

    #pragma once
    #ifndef BIG_ARRAY_H 
    #define BIG_ARRAY_H
    void getArrayStatistics(int* array, int num_data, int& min, int& max, double& sum, double& avg, double& var, double& std_dev);
    #endif
    

    BigArray.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void getArrayStatistics(int* array, int size, int& min, int& max, double& sum, double& avg, double& var, double& std_dev)
    {
        double sum_sq_diff = 0.0;
    
        for (int i = 0; i < size; i++) 
        {
            sum += array[i];
        }
        avg = sum / size; 
        for (int i = 0; i < size; i++) 
        {
            sum_sq_diff += (array[i] - avg) * (array[i] - avg);
        }
        var = sum_sq_diff / size; 
        std_dev = sqrt(var); 
    }
    

    오류

    오류(활성) E0141 본문이 있는 경우 명명되지 않은 프로토타입 매개 변수를 사용할 수 없습니다. (줄6)

    오류(활성) E0018 ')'가 필요합니다. (줄6)

    오류 C2143 구문 오류: ')'이(가) '&' 앞에 없습니다. (줄6)

    오류 C2143 구문 오류: '{'이(가) '&' 앞에 없습니다. (줄6)

    오류 C2059 구문 오류: '&' (줄6)

    오류 C2059 구문 오류: ')' (줄6)

    오류(활성) E0020 식별자 "sum"/"avg"/"var"/"std_dev"이(가) 정의되어 있지 않습니다.