2011-12-24 3 views
0

Я пытаюсь сравнить свой код с двумя векторами. Оба вектора будут сравниваться с тем же количеством int с. Я хочу, чтобы он выводил Yes, если все int s в redCups меньше, чем GreenCups. И выход No, если какая-либо чашка на всех в redCups больше, чем greenCups.Сравнение векторов и печати bool

Я решаю это право?

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

Вы можете использовать алгоритм std::equal для сравнения каждой пары элементов из двух контейнеров. По умолчанию он возвращает true, если все пары равны, но легко проверить каждую пару для less или less_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; 
     } 

Я полагаю, что вы проверили до этого redCups и greenCups содержит, по меньшей мере, numCups из Интс:

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

, если вы хотите проверить это, вы можете вернуть int: 1 для true, 0 для false и -1, если один из векторов содержит меньше, чем ints numCups. –

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

Я немного изменил свой код и получил это. Кажется, это работает для меня.