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



LinkBack URL
About LinkBacks


