如何比较向量中的元素?

时间:2019-06-03 18:02:37

标签: c++ c++11

我在线看了一下,没有一个答案能解决我比较向量中元素的问题。

我尝试实现bool函数,但问题是相同的。

我在C ++中还很陌生,所以请耐心等待!

PART2:首先,谢谢。 因此,我更改了程序并创建了一个bool函数,问题是现在它在5到6次尝试之前就无法被识别。

#include <iostream>
#include <vector>
#include <time.h>
#include <stdlib.h>
#include <string>

using namespace std;

vector<int> input, compareMe, randomNumbers;
const unsigned int MAX_VEKTORSTELLEN = 5;
const unsigned int UPPER_GRENZE = 49;
const unsigned int LOWER_GRENZE = 1;
unsigned int i, j;
string output;
int random, anzahlRichtige, eingabe;
bool isEqual = false;

string lotto(vector<int>)
{
    if (input[i] < LOWER_GRENZE || input[i] > UPPER_GRENZE)
    {
        output = "Die Zahlen muessen zwischen 1 und 49 liegen! \n";
        input.pop_back();
    }
    else if (input.size() != MAX_VEKTORSTELLEN)
        output = "Es muessen 6 Zahlen uebergeben werde! \n";
    else if (isEqual == true)
        output = "Es duerfen keine doppelten Zahlen vorkommen! \n";
    else
        for (i = 0; i <= MAX_VEKTORSTELLEN; i++)
            srand((unsigned)time(NULL) <= UPPER_GRENZE && (unsigned)time(NULL) > 0);
            random = rand();
            randomNumbers.push_back(random);
    return output;
}
bool compare()
{
    compareMe = input;
    for (i = 0; i < input.size(); i++)
        for (j = 0; j < compareMe.size(); j++)
            if (compareMe[j] == input[i])
                isEqual = true;
    return isEqual;
}
int main()
{
    cout << "insert 6 numbers: ";
    while (cin >> eingabe)
    {
        input.push_back(eingabe);
        lotto(input);
        compare();
        cout << output;
        for (i = 0; i < input.size(); i++) //Debug
            cout << input[i] << ", ";
        continue;
    }
    for (i = 0; i < input.size(); i++)
        cout << input[i];
    system("pause");
    return 0;
}

从第34行到第二行,我还没有完成编码,但是并没有什么关系,因为我之前被卡住了。

1 个答案:

答案 0 :(得分:0)

您在lotto中的所有循环都是错误的。您越过了容器的末端。

for (i = 0; i <= input.size(); i++)
//             ^ !!!

应为<

您在main中获得了正确的权限。