Hi all,
I'm working my way through this book and I'm having some trouble in an exercise. It asks to write a program to compute and print quartiles (the quarter of the numbers with largest values) of a set of integers.
Here's my attempt:
Code:
#include <iostream> //for cin cout endl
#include <vector> //for vectors
#include <algorithm> //for sort
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
int num, count;
vector<int> vec;
vector<int>::size_type i, remainder;
cout << "Please enter integer numbers: " << endl;
while (cin >> num) {
vec.push_back(num);
}
if (vec.size()==0) {
cout << "Please rerun the program and enter integers: ";
return 1;
}
sort(vec.begin(), vec.end());
i=vec.size();
remainder=(vec.size()%4);
cout << "Program output:" << endl;
// print all the quartiles
while (i>remainder) {
cout << vec[i-1];
if (count%4==0)
cout << endl;
--i;
}
cout << endl;
// print any remaining numbers
for (;i>0;--i)
cout << vec[i-1] << "leftovers!";
return 0;
}
My problem is in the for loop. If I run the program and enter five integers, then just before this loop, DDD shows:
- i=1, remainder=1 before the loop
- goes to the for loop
- i=0, remainder=1 at the cout line
- DDD goes to stl_vector.h, and to:
Code:
operator[](size_type __n)
{ return *(this->_M_impl._M_start + __n); }
- then back to my program at the line where the for is, with i=0, remainder=1
- then to the cout line, but i is now 429467295
- then again to stl_vector.h, and then the for loop iterates, but without writing anything.
Can someone please explain where is my mistake in this program?
Sorry if the above is a bit confusing, I'm trying to provide as much as info as I can.
Many thanks for your help,
Spiros