2017-11-03 30 views
-1

ですから、imの新しいcと、配列の中央値を見つけて表示する関数を作成しようとしています。 idが1の終了ステータスを返し、定義されていない参照が中央値を表示するというエラーが発生しています。私はそれらを見ようとしましたが、これに適用された投稿はありませんでした。誰かが見て、いただきました!間違った教えてください?(そこにこのコードへのより多くのですが、私はただのどの部分イム取得エラーを掲載)コンパイラIDのエラーが返されました。終了ステータス

#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

このコードの1つの問題点は、Cの他の関数の中で関数を定義することができないということです。私は 'displaymedian'関数が不足しているという不満を抱いていても驚いています。 – zwol

答えて

0

あなたはdisplaymedianという名前の関数を呼び出しますが、あなたのコードでノーがあることができますその名前の関数ですが、medianという名前の関数があります。

だから変更します(ただし、警告が)、この補正で

int displaymedian(int array[]) 

あなたのプログラムのコンパイルをし、正しく実行するに表示されますが、計算の場合、私はチェックしませんでした:へ

int median(int array[]) 

を実際には正しいです。

関連する問題