2016-05-27 13 views
-4

配列の入力は{4,13,9,10,17,25,35,40,29,48,52,12,15,71,27,32}です。私は4と13のような2つの要素を比較する必要があり、大きな要素は一時配列に行き、配列の次の要素と比較されます。配列の接頭辞の最大値を計算します。

私はこのコードを持っており、それは私に {13,10,25,40,48,52,71,32,13,40,52,71,40,71} 配列を与えていると私が必要次の配列のような出力を得る {4、13、13、13、17、25、35、40、40、48、52、52、52、71、71、71}

#include <stdio.h> 
    int main() 
    { 
     int pairmax(int[], int); 
     int premax(int[], int); 
     int i, j, max1, max2, n; 
    n=16; 
    int x[16]={4, 13, 9, 10, 17, 25, 35, 40, 29, 48, 52, 12, 15, 71, 27, 32}; 
     max1 = pairmax(x,n); 
     max2 = premax(x, n); 

     printf("Pairwise max: Largest = %d\n",max1); 
     printf("Prefix max: Largest = %d\n",max2); 
    } 

    int pairmax(int x[], int n) // Implementation of Pairwise Max 
    { 
     int max(int, int); 
     int y[10], i, j; 
     if (n==2) 
      return max(x[0], x[1]); 
     for(i=0, j=0; i<n;i+=2,j++) 
     { 
      if(i < n-1) 
      y[j] = max(x[i], x[i+1]); 
      else 
      y[j] = x[i]; 


    printf("Prefix max: Largest = %d\n",y[j]); 
     } 
     return pairmax(y,j); 
    } 


    int premax(int x[], int n) // Implementation of Prefix Max 
    { 
     int max(int, int); 
     int large, i; 
     large = x[0]; 
     for(i=1; i<n;i++) 
      large = max(large,x[i]); 
     return large; 
    } 

    int max(int a, int b) 
    { 
     if (a > b) 
      return a; 
     else 
      return b; 
    } 
+0

よし。あなたの疑問は何ですか? –

+0

現在のロジックはX + Y + 1です。このロジックの後にコードが提供されています。最大数を見つけるために変更する必要があります。現在の配列にはx = {1,2,3,4,5,6,7、 8} - 入力 y =(1、3、6、10、15、21、28、36) - 出力。私はこれが必要です。例::: x = {4,13,9,10,17,25,35,40,29,48,52,12,15,71,27,32} 期待される出力は:y = {4,13,13,13,17,25,35,40,40,48,52,52,52,71,71,71} –

+0

それは、配列の各要素と比較して、大きな要素が行く配列内の次の要素と比較します。最初の要素は自身を0と比較して処理を開始します。 0と4のように大きい方は4を前方に配置します。 4と13の間では1つが大きくなり、13が転送されます。私はその配列を印刷する必要があります。 –

答えて

0
#include <stdio.h> 

int main(void){ 
    int array[] = {4, 13, 9, 10, 17, 25, 35, 40, 29, 48, 52, 12, 15, 71, 27, 32}; 
    int size = sizeof(array)/sizeof(*array); 
    int max = array[0]; 
    int result[size]; 

    for(int i = 0; i < size; ++i){ 
     if(max < array[i]) 
      max = array[i]; 
     result[i] = max; 
    } 
    //print result 
    putchar('{'); 
    for(int i = 0; i < size; ++i){ 
     if(i) 
      putchar(','); 
     printf("%d", result[i]); 
    } 
    putchar('}'); 
    putchar('\n'); 

    return 0; 
} 
+0

soooたくさんBLUEPIXY、この配列のファイルから入力を取ることができますありがとう?私は10,000データポイントのように持っていると私はそれらから入力を取る必要があります。 –

+0

@samipshah単純にシーケンスを保存せずに表示するだけであれば、データの数が多くても同じシーケンスを表示できます。 – BLUEPIXY

+0

最後の質問上記のプログラムで最大の要素をどのように印刷することができますか? –

関連する問題