2011-12-24 134 views
0

我想讓我的代碼比較兩個向量。這兩個載體將與相同數量的ints進行比較。如果redCups中的所有int均小於GreenCups,我希望它輸出Yes。並且輸出No如果redCups中的任何杯子都大於greenCups比較向量和打印布爾

我處理這個權利?

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

當您嘗試使用某些測試數據集時,您的代碼是否正常工作?你的邏輯結構看起來不錯,但你可能有一些測試倒退。 – 2011-12-24 02:56:48

回答

2

可以使用std::equal算法每對元素的兩個容器進行比較。默認情況下,如果所有配對相等,則返回true,但是可以輕鬆地測試每對配對lessless_equal

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

的代碼是好的,但有一個小錯誤,你想是的,如果所有redCups < greenCups,所以沒有如有redCups> =greenCups。代碼:

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

我想你有redCupsgreenCups前檢查包含整數至少numCups

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

如果你想檢查這個,你可以返回一個int:1爲真,0爲假,如果其中一個向量小於numCups,則返回-1。 – 2011-12-24 03:34:42

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; 
} 

我稍加修改你的代碼,並得到了這個。它似乎爲我工作。