2011-12-24 15 views
0

私のコードを2つのベクトルを比較しようとしています。両方のベクターを同じ量のintと比較する。 redCupsintがすべてGreenCups未満の場合は、Yesを出力します。 redCupsのカップがすべてgreenCupsより大きい場合は、出力Noを出力します。ベクトルの比較とブールの印刷

私はこの権利に取り組んでいますか? > =greenCups任意のredCups場合

bool beb = true; 

    for (int i = 0; i < numCups; i++) 
    { 
     if (redCups[i]<greenCups[i]) 
     { 
      beb = false; 
     } 
    } 

    if (beb == true) 
    { 
     cout << "Yes" << endl; 
    } 
    if else (beb == false) 
     cout << "No" << endl; 
+2

いくつかのテストデータセットで試してもコードは正常に動作しますか?あなたのロジックの構造は大丈夫ですが、あなたはいくつかのテストを逆にしているかもしれません。 –

答えて

2

次の2つのコンテナから要素の各ペアを比較するstd::equalアルゴリズムを使用することができます。

if (redCups[i] >= greenCups[i]) // you have to decide whether if its > or >= 
     { 
      beb = false; 
     } 

私はあなたがredCupsgreenCupsその前にチェックしていると仮定は、int型の少なくともnumCupsが含まれています。デフォルトでは、すべてのペアが等しい場合はtrueを返しますが、代わりにlessまたはless_equalの各ペアをテストするのは簡単です。

bool beb = std::equal(redCups.begin(), redCups.end(), greenCups.begin(), std::less<int>()); 
0

コードは良いですが、少しのミスがあり、あなたはすべてのredCups < greenCups場合はそう取得したい、そうありません。コード:

if (redCups.size() >= numCups && greenCups.size() >= numCups) 
{ 
    //your code : (bool beb = true; .................... cout << "No" << endl;) 
} 
+0

これをチェックしたい場合は、trueを返すには1、falseにするには0を、ベクトルの1つに 'numCups' intよりも小さいものがあれば-1を返します。 –

0
#include <iostream> 
#include <vector> 
using namespace std; 

int main(void) 
{ 
    vector<int> v1; 
    vector<int> v2; 

    v1.push_back(5); 
    v1.push_back(9); 
    v1.push_back(4); 
    v1.push_back(3); 
    v1.push_back(2); 

    v2.push_back(10); 
    v2.push_back(12); 
    v2.push_back(9); 
    v2.push_back(4); 
    v2.push_back(3); 

    bool beb = true; 
    for (unsigned int i=0; i<v1.size(); i++) 
     if(!(v1[i]<v2[i])) 
     { 
      beb = false; 
      break; 
     } 

    if (beb == true) 
     cout << "Yes" << endl; 
    else 
     cout << "No" << endl; 

    cin.get(); 
return 0; 
} 

私は少しあなたのコードを修正し、これを得ました。それは私のために働くようです。

関連する問題