2012-05-03 8 views
0

私は、偶数と奇数の和を求め、両方の和を足し合わせようとしています。私は偶数番号を取得するように配列をループしようとしていますが、最初のインデックスを返すようにしています。助けてくれてありがとう。配列の偶数と奇数の和を加算する方法

私の目的は、配列2,1,5,9,8,4を取って、偶数インデックスをとり、それを奇数インデックスに加えることです。 a [0] = 2、a [1] = 1、a [2] = 5、a [3] = 9、a [4] = 8、a [5] = 4である。 (1 + 9 + 4)=

この1は私が私のコードがオフ

int calc(int *a, int size) 
{ 
    if(size==1 || size==0) 
     return a[0]; 
    for(int i=0; i<size; i++){ 
     if(i%2==0){ 
      int sum_i = a[i]; 
      int m=calc(a, size-1); 
      if(m>a[size-1]) 
       return m; 
     } 
    } 
    for(int j=0; j<size; j++){ 
     if(j%2!=0); 
     int sum_j = a[j]; 
     return sum_j; 
    } 
    int sum = a[i] - a[j]; 
    int e = calc(a, size-1); 
    if(e%2==0) 
     return e=e+0; //return even 

    return sum; 
} 

int main() 
{ 
    int a[6]={1,2,3,5,6,2}; 
    int size = 6; 
    cout<< calc(a, size)<<endl; 

    system("pause"); 
    return 0; 
} 
+0

なぜあなたは二回、配列をループしていますか?配列要素が偶数か奇数かを判断するときは、ロジックを使用して、正しい合計値に数値を加算します。これは、必要以上にループしたくない場合には、大規模配列の場合に特に重要です。 – Marc

+0

'if(j%2!= 0);'というステートメントの意図は?あなたはこれが何をすると思いますか? – ildjarn

答えて

1
かもしれないので、これまでのところ、私は再帰的に精通していないです得たものである - それは、(2 + 5 + 8)がかかります

これには再帰は必要ありませんか?

// calc(): returns sum(a[0], a[2], a[4], ...) - sum(a[1], a[3], a[5], ...) 
int calc(int *a, int size) 
{ 
    int sum_even_pos = 0; 
    int sum_odd_pos = 0; 
    for (int i = 0; i < size; i++) 
    { 
     sum_even_pos += a[i]; 
     if (++i < size) sum_odd_pos += a[i]; 
    } 
    return sum_even_pos - sum_odd_pos; 
} 

http://codepad.org/DVx0sgg1

+0

あなたのリンクの出力は-1であってはなりませんか? 「1 + 3 + 5 = 9」、「2 + 6 + 2 = 10」、「9-10 = -1」である。 –

+0

Nope。 「1 + 3 + 6 = 10」、「2 + 5 + 2 = 9」、「10-9 = 1」 – dwurf

+0

は、以来、いつ偶数5ですか?これは偶数インデックスと奇数インデックスの合計であるはずですが、変数名にはそれが反映されていません。 –

関連する問題