-3

それぞれ5つの整数を持つ2つの配列がありますが、配列Aが配列Bよりも大きくなるように両方の配列を比較するにはどうすればよいですか?以下は、0を返すコードです。

#include <iostream>
using namespace std;

int main()
{
    const int AMAX = 5, BMAX = 6;
    int i;
    bool c1 = true, c2 = false;
    int A[AMAX] = { 1, 2, 3, 4, 5 };
    int B[BMAX] = { 6, 7,8, 9, 1};

    for (i = 0; i < BMAX; i++)
        if (B[i] == A[i])       
            cout << c1 << endl;
        else
            cout << c2 << endl;
    return 0;
}

ここで何が欠けていますか?

アップデート:

#include <iostream>
using namespace std;
int main(){
  int a[] = {6,7,29};
  int b[] = {3,2,11};
  int acc1=0;
  int acc2 = 0;
  for (int i=0;i<3;i++){
    acc1+=a[i];
}
  for(int j=0;j<3;j++){
    acc2+=b[j];
}

if(acc1 < acc2){
  printf("Array B is greater than Array B ");
}

else{
  printf("Array B greater than Array A");
}

  return 0;
}
4

3 に答える 3

1

組み込みアルゴリズムstd::equalを使用して、2 つの配列を比較できます。例:

#include <iostream>
#include <algorithm>
using namespace std;
#define countof(x) sizeof(x)/sizeof(x[0])
int main()
{
    int A[] = { 2, 4, 1, 5, 9 };
    int B[] = { 9, 12, 32, 43, 23};
    int C[] = { 2, 4, 1, 5, 9 };
    cout << equal(A, A + countof(A), B) << endl;
    cout << equal(A, A + countof(A), C) << endl;
}

出力:0 1

于 2013-03-04T09:05:20.983 に答える
1

比較したいものが配列内の要素の合計Aである場合 (つまり、 内のすべての要素の合計が 内のすべての要素の合計よりも大きいかどうかを判断するB)、質問のタイトルが暗示しているように、これはあなたが望むことを行うはずです:

#include <iostream>
#include <algorithm>
#include <numeric>
#include <iomanip>

int main()
{
    using namespace std;

    int A[] = { 2, 4, 1, 5, 9 };
    int B[] = { 9, 12, 32, 43, 23};

    int sumA = accumulate(begin(A), end(A), 0);
    int sumB = accumulate(begin(B), end(B), 0);

    cout << boolalpha << (sumA > sumB);

    return 0;
}

C++11 を使用していない場合は、C++03 で書かれた同等のプログラムを次に示します。

#include <iostream>
#include <numeric>

int main()
{
    using namespace std;

    int A[] = { 2, 4, 1, 5, 9 };
    int B[] = { 9, 12, 32, 43, 23};

    int sumA = accumulate(A, A + sizeof(A) / sizeof(int), 0);
    int sumB = accumulate(B, B + sizeof(B) / sizeof(int), 0);

    cout << ((sumA > sumB) ? "true" : "false");

    return 0;
}
于 2013-03-04T09:09:18.613 に答える
0
#include <iostream>
using namespace std;
int main()
{
int suma;
int sumb;

int A[] = { 2, 4, 1, 5, 9 };
int B[] = { 9, 12, 32, 43, 23};

suma = accumulate(A, A + sizeof(A) / sizeof(int), 0);
sumb = accumulate(B, B + sizeof(B) / sizeof(int), 0);

cout << ((sumA > sumB) ? "true" : "false");

return 0;
}
于 2013-03-04T09:32:00.840 に答える