Hi,

Could you please help point out the logic error in the following codes, & give a hint for fixing the error? This is an exercise for control loop and vectors, so I'm not allowed to use a function with an argument as a vector.

Thanks a lot.

Code:

// Exercise 16 - Chapter 4
// Control statements, if statements & vectors
#include "std_lib_facilities.h"
int main()
{
int x = 0;
unsigned int i = 0;
unsigned int j = 0;
vector<int> numbers;
cout << "Enter a series of positive integers: ";
while (cin>>x) {
numbers.push_back(x);
}
cout << "You have entered: ";
for (i=0; i<numbers.size(); ++i)
cout << numbers[i] << ' ';
sort(numbers.begin(), numbers.end());
cout << "\nIn ascending sorted order: ";
for (i=0; i<numbers.size(); ++i)
cout << numbers[i] << ' ';
int prev_count = 0;
int curr_count = 0;
int mode = 0;
for (i=0; i<numbers.size(); ++i) { // for each element of the vector "numbers"
for (j=0; j<numbers.size(); ++j) { // compare it to all its other elements
if (numbers[j]==numbers[i]) // if 2 elements equal, increment the count (curr_count)
++curr_count;
}
if (curr_count>prev_count) { // if the current count greater than previous count
mode = numbers[i]; // the mode is set to equal that element of the vector
prev_count = curr_count; // set previous count == current count & repeat above steps
curr_count = 0; // set current count to zero after finishing the check on each of the elements
}
}
cout << "The mode is " << mode << '\n';
}