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:

My problem is in the for loop. If I run the program and enter five integers, then just before this loop, DDD shows: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; }

- 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:

- then back to my program at the line where the for is, with i=0, remainder=1Code:operator[](size_type __n) { return *(this->_M_impl._M_start + __n); }

- 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