|
|
Subject:
c++ programing question
Category: Computers Asked by: purplepit-ga List Price: $25.00 |
Posted:
04 Apr 2003 07:58 PST
Expires: 04 May 2003 08:58 PDT Question ID: 185969 |
Given the program below, can anybody modify the template display function so the displayed lists have [brackets around them,] and commas between each item, plus if the list is longer than 5 items, then only the first 3 and the last two items are displayed, the missing items should be replaced by 3 dots in a row(...) the program also needs to include the defenition of the display function()so that it runs without errors!!!!!! ******************************************************************************** #pragma warning(disable: 4786) // advised for MSVC++5.0 #include <list> #include <string> #include <iostream> #include <algorithm> using namespace std; template<class iT> void display (iT start, iT finish) { for (iT it=start; it != finish; it++) { cout<<*it<< ' '; } } void main() { list<string> critters; int i; critters.insert(critters.begin(),"antelope"); // antelope critters.insert(critters.begin(),"bear"); // bear antelope critters.insert(critters.begin(),"cat"); // cat bear antelope display(critters.begin(),critters.end()); *find(critters.begin(),critters.end(),"cat") = "cougar"; // cougar bear antelope display(critters.begin(),critters.end()); // Put a zebra at the beginning, an ocelot ahead of antelope, // and a rat at the end. critters.push_front("zebra"); critters.insert(find(critters.begin(),critters.end(),"antelope"),"ocelot"); critters.push_back("rat"); display(critters.begin(),critters.end()); critters.sort(); display(critters.begin(),critters.end()); // Now let's erase half of the critters. int half = critters.size() / 2; for (i = 0; i < half; i++) { critters.erase(critters.begin()); } display(critters.begin(),critters.end()); } |
|
Subject:
Re: c++ programing question
Answered By: hammer-ga on 04 Apr 2003 09:38 PST Rated: |
Here is the replacement display function. NOTE: The Answer box may wrap lines of code incorrectly. void display (iT start, iT finish) { iT it; int cnt; int loop; int no_go; int end_list_items; // Change these variables to change how many // items your list displays int start_list_items = 3; int max_list_items = 5; end_list_items = max_list_items - start_list_items; cnt = 0; // Find out if we need the ... by counting elements for (it=start; it != finish; it++) { cnt++; } loop = 1; no_go = 0; cout << '['; for (it=start; it != finish; it++) { if(cnt > max_list_items) { if((loop > start_list_items) && (loop <= (cnt - end_list_items))) { no_go = 1; if(loop == (start_list_items + 1)) cout << "... "; } else { no_go = 0; } } if(no_go == 0) { cout << *it; if(loop < cnt) { if((cnt > max_list_items) && (loop == start_list_items)) { cout << " "; } else { cout << ", "; } } } loop++; } cout << "]\n"; } - Hammer |
purplepit-ga
rated this answer:
Thank you very much... Purplepit |
|
Subject:
Re: c++ programing question
From: ppmart2-ga on 04 Apr 2003 09:21 PST |
have good code #include <list> #include <string> #include <iostream> #include <algorithm> using namespace std; template<class iT> void display (iT start, iT finish) { iT it = start; int count = 0; while( it != finish) // find the number of item { count++; it++; } if(count < 5) // if the number < 5 { // display normally with '[' and ',' int index = 1; it = start; cout << "[" ; while( it != finish) { cout << *it ; if(index != count ) cout << ","; index++; it++; } cout << "]" ; } else { // else the first 3 item and the last 2 ones are displayed int index2 = 2; it = start; cout << "[" << *it << "," << *it++ << "," << *it++; while(index2 != count-2) { it++; index2++; } cout << ",...," << *it << "," << *it++ << "]"; } cout << endl; } void main() { list<string> critters; int i; critters.insert(critters.begin(),"antelope"); // antelope critters.insert(critters.begin(),"bear"); // bear antelope critters.insert(critters.begin(),"cat"); // cat bear antelope display(critters.begin(),critters.end()); *find(critters.begin(),critters.end(),"cat") = "cougar"; // cougar bear antelope display(critters.begin(),critters.end()); // Put a zebra at the beginning, an ocelot ahead of antelope, // and a rat at the end. critters.push_front("zebra"); critters.insert(find(critters.begin(),critters.end(),"antelope"),"ocelot"); critters.push_back("rat"); display(critters.begin(),critters.end()); critters.sort(); display(critters.begin(),critters.end()); // Now let's erase half of the critters. int half = critters.size() / 2; for (i = 0; i < half; i++) { critters.erase(critters.begin()); } display(critters.begin(),critters.end()); } |
Subject:
Re: c++ programing question
From: ppmart2-ga on 04 Apr 2003 09:24 PST |
a better one #include <list> #include <string> #include <iostream> #include <algorithm> using namespace std; template<class iT> void display (iT start, iT finish) { iT it = start; int count = 0; while( it != finish) // find the number of item { count++; it++; } if(count <= 5) // if the number <= 5 { // display normally with '[' and ',' int index = 1; it = start; cout << "[" ; while( it != finish) { cout << *it ; if(index != count ) cout << ","; index++; it++; } cout << "]" ; } else { // else the first 3 item and the last 2 ones are displayed int index2 = 2; it = start; cout << "[" << *it << "," << *it++ << "," << *it++; while(index2 != count-2) { it++; index2++; } cout << ",...," << *it << "," << *it++ << "]"; } cout << endl; } void main() { list<string> critters; int i; critters.insert(critters.begin(),"antelope"); // antelope critters.insert(critters.begin(),"bear"); // bear antelope //critters.insert(critters.begin(),"cat"); // cat bear antelope display(critters.begin(),critters.end()); *find(critters.begin(),critters.end(),"cat") = "cougar"; // cougar bear antelope display(critters.begin(),critters.end()); // Put a zebra at the beginning, an ocelot ahead of antelope, // and a rat at the end. critters.push_front("zebra"); critters.insert(find(critters.begin(),critters.end(),"antelope"),"ocelot"); critters.push_back("rat"); display(critters.begin(),critters.end()); critters.sort(); display(critters.begin(),critters.end()); // Now let's erase half of the critters. int half = critters.size() / 2; for (i = 0; i < half; i++) { critters.erase(critters.begin()); } display(critters.begin(),critters.end()); } |
Subject:
Re: c++ programing question
From: purplepit-ga on 06 Apr 2003 14:07 PDT |
Thank you very much, this was extremly helpful.... #Purplepit |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
Search Google Answers for |
Google Home - Answers FAQ - Terms of Service - Privacy Policy |