can anyone help me with a small exercise i have been given from a book. i have to check if numbers enetered into an array have duplicate entries and the following is what i have come up with so far. it compiles and runs but has logic errors which i describe further down.
i know there is probably an easy way to complete this task with better algorithms or function calls however my c++ knowledge is limited so please if possible, offer advice that is simple and uses rudimentry c++ functions etc.
Code:#include <iostream> #include <algorithm> #include <ios> #include <string> #include <vector> #include <iomanip> int main() { std::vector<double> numbers; double x; std::cout << "please enter a sequence of numbers" << std::endl; while(std::cin >> x) { numbers.push_back(x); } sort(numbers.begin(), numbers.end()); std::vector<double>::size_type size = numbers.size(); int count = 0; for (int x=0; x!=size; ++x) { while(x!=numbers.size()) { if numbers[0] == numbers[x] [ ++count; ++x; } else { ++x; } if(numbers[x] == numbers[x+1]) { ++count; ++x; }else{ ++x; } ++x; } std::cout << "the number of duplicate entries is " << count << std::endl; return 0; }
i am attempting to search the array and check if there a values that are the same for example if the input stream is
1, 2, 3, 3, 4, 5, 2
i hope to get 2 as an answer since the value 2 and 3 are entered twice.
i know that my code is wrong in 2 places but am having trouble on how best to move forward and overcome it.
the first problem if the if statement itself,
if(numbers[x] == numbers[x+1]
is not logical as only 2 numbers adjacent to each other would be compared and the first index would not be compared with an index 4 places down the line.
the other problem is an error that i recieve, its array out of bounds
the code above will compile though, with run time errors however
thanks in advance