Как найти совпадающие элементы в одном векторе - PullRequest
0 голосов
/ 05 февраля 2019

Я хотел бы указать, сколько раз элемент НЕ будет виден снова в векторе.Элементы в векторе должны быть рандомизированы начальным числом, в данном случае 3.

Например, если числа 2, 6 и 4 снова показаны в векторе с размером 30, totalComplete долженбыть 27, так как 3 числа повторяются.

#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{
    vector<int> seats;
    int totalComplete = 0;
    srand(3);
    seats.resize(30);
    for(int k = 0; k < 20; k++){
        seats.at(k)=(rand()%30);
        cout << seats.at(k);
        cout <<" ";
        totalComplete++;
        for(int j = 0; j < 20; j++){
            if(j != k)
                if(seats.at(k) == seats.at(j))
                    totalComplete--;
        }
        cout<<endl;
    } 
    cout << totalComplete;
    return 0;
}

Итак, в моем коде числа, произвольно расположенные в векторе, равны 6 25 18 0 15 10 12 16 1 4 28 4 3 19 22 21 24 25 1 15Числа 25, 15, 1 и 4 повторяют их, так что totalComplete должно быть 16. Однако мой код выдает 0. Я считаю, что регион, в котором я проверяю, повторяется ли число, неверен.

1 Ответ

0 голосов
/ 05 февраля 2019

Мой непосредственный совет - разделить код на маленькие кусочки и протестировать каждый по отдельности.Я бы начал с функции, чтобы просто заполнить массив случайными числами.Затем я написал бы функцию для подсчета уникальных записей.Проверьте каждый в отдельности и убедитесь, что вы получаете то, что ожидаете.Затем, когда каждый из них работает сам по себе, соберите их вместе, чтобы получить полную программу, которая делает то, что вы действительно хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...