2017-11-03 30 views
-1

그래서 im to c 및 im 배열의 중간 값을 찾아서 표시하려고합니다. ID가 1 종료 상태를 반환하고 정의되지 않은 참조가 중간 값을 표시한다는 오류가 발생합니다. 나는 그들을 보려고 노력했지만 어떤 게시물도 이것에 적용되지 않았다. 누군가를 살펴보고 무슨 잘못 말해 줄래? (이 이상이 코드에 없지만 난 그냥에서 오류를 받고 어떤 부분 메신저 게시) 당신은 displaymedian라는 함수를 호출컴파일러 ID에 오류가 반환되었습니다. 1 종료 상태

#include <stdio.h> 
    #define MAX 10 

void getdata(int array[]); 
    int displaylargest(int array[]); 
    int displaysmallest(int array[]); 
    int displayaverage(int array[]); 
    int displayrange(int array[]); 
    int displaymedian(int array[]); 

    void displaydata(int array[]); 





    int main() 
     { 

     int array[MAX]; 
     int largest; 
     int smallest; 
     int average; 
     int range; 
     int median; 


      printf("\nEnter ten numbers \n\n"); 

      getdata(array); 

      displaydata(array); 


      largest=displaylargest(array); 
       printf("\nThe largest %d\n", largest); 

      smallest=displaysmallest(array); 
       printf("\nThe smallest is %d\n", smallest); 

      average=displayaverage(array); 
      printf("\nThe average is %d\n", average); 

      range=displayrange(array); 
      printf("\nThe range is %d\n", range); 

      median=displaymedian(array); 
      printf("\nThe median is %d\n", median); 
    return 0; 
    } 

void getdata(int array[]) 

    { 
     int x; 
      printf ("Enter a number\n ",x+1); 
     for(x=0;x<MAX;x++) 

       scanf ("%d",&array[x]); 

    } 

    int displaylargest(int array[]) 
    { 
     int x, largest=array[0]; 


     for (x=0; x<MAX; x++) 
     { 
     if (array[x]>largest) 

      largest=array[x]; 

     } 


     return(largest); 


    } 

    int displaysmallest(int array[]) 


    { 

     int x, smallest=array[0]; 

     for (x=0; x<MAX; x++) 
     { 
     if (array[x]<smallest) 

      smallest=array[x]; 

     } 


     return(smallest); 


    } 


       int displayaverage(int array[]) 

    { 
     int x; 
     int sum=0; 
     int average; 

      for (x=0; x<MAX; x++) 
     { 
     sum+=array[x]; 
     } 
     { 
      average=sum/MAX;  
     } 




     return(average); 

    } 
    int displayrange(int array[]) 
    { 

     int x; 
     int range; 
     int largest=array[0]; 
     int smallest=array[0]; 
     for (x=1; x <MAX; x++) 
     { 

     if (array[x] < smallest) smallest = array[x]; 
     if (largest < array[x])largest = array[x]; 

     } 

     range=largest-smallest; 
     return range; 

    } 


    int median(int array[]) { 
int temp; 
int median; 
int x, y; 
// the following two loops sort the array x in ascending order 
for(x=0; x<MAX-1; x++) { 
    for(y=x+1; y<MAX; y++) { 
     if(array[y] < array[x]) { 
      // swap elements 
      temp = array[x]; 
      array[x] = array[y]; 
      array[y] = temp; 
     } 
    } 
} 

if(MAX%2==0) { 
    // if there is an even number of elements, return mean of the two elements in the middle 
    median=(array[MAX/2] + array[MAX/2 - 1])/2.0; 
    return median; 
} else { 
    // else return the element in the middle 
    median= array[MAX/2]; 
    return median; 
} 
} 


     void displaydata(int array[]) 
     { 

     int x; 
    for(x=0; x<MAX; x++) 
    { 
    printf("%d, ",array[x]); 

     } 
    } 
+4

99 %는 'id'가 아닌 'ld'이고 1 종료 상태를 반환했습니다. – zwol

+2

당신의'displaymedian' 함수는 어디에 있습니까? 링커도 알지 못합니다. – yano

+2

이 코드의 한 가지 문제점은 C의 다른 함수 안에 함수를 정의 할 수 없다는 것입니다. 누락 된'displaymedian' 함수에 대해 불평까지 한 것은 놀랍습니다. – zwol

답변

0

,하지만 코드에서 어떤을가 함수가 있지만 그 이름은 median입니다.

int median(int array[]) 

에 :

그래서 단지 변경하려면 프로그램 (비록 경고와 함께) 컴파일하고 제대로 실행하기 위해 나타납니다이 보정

int displaymedian(int array[]) 

,하지만 난 계산 여부를 확인하지 않았다 실제로 맞습니다.