CSC 330 Object Oriented Design Using STL Lab 6 Make the prog
CSC 330 Object Oriented Design Using STL Lab 6   
 
 Make the program bellow to work and to produce the kind of output you see at the bottom.
 
 #include <iostream> #include <vector> #include <string> #include <iterator> #include <algorithm> #include <functional>
 
 using namespace std;
 
 // This function reverses a string in place. For example, // if the original value of the string was \"cat\", the // value after reversing it is \"tac\". void reverse(string& s){ int i = 0, j = s.length() - 1; while(i < j){ swap(s[i++], s[j--]); } }
 
 void main(){ // Create a vector of strings and allocate 100 elements worth of space // to start with. vector<string> theWords; theWords.reserve(100);
 
 // Create an iterator that will iterate over the strings in the input // stream cin. Also create an iterator that matches the end of the input. istream_iterator<string> stringReader(cin); istream_iterator<string> stringReaderEOF;
 
 // Read strings in one at a time and push them onto the vector. while(stringReader != stringReaderEOF){ theWords.push_back(*stringReader++); }
 
 // Show the words. cout << \"The words read in are:\ \"; // 1: Fill in the function argument so that // the output from this statement will be the words, // one to a line. Do the same with each copy() // call in the code below. See the sample output. copy( );
 
 //Make of copy of the input. vector<string> aCopy(theWords); // Now reverse all the strings in the copy and show the result. // 2: Complete the for_each call so that // it will reverse every string in the copy. for_each( ); cout << \"\ After reversing all the strings in the copy:\ \"; copy( );
// 3. Sort the original strings in descending order. // Complete the sort call so that this call will // sort the words in theWords in descending order. sort( ); cout << \"\ After sorting the strings in descending order:\ \"; copy( );
 
 
 }
 
 
 Sample output: the rain in spain falls mainly in the plain ^Z ^Z The words read in are: the rain in spain falls mainly in the plain
 
 After reversing all the strings in the copy: eht niar ni niaps sllaf ylniam ni eht nialp
 
 After sorting the strings in descending order: the the spain rain plain mainly in in falls Press any key to continue
Solution
#include <iostream>
 #include <vector>
 #include <string>
 #include <iterator>
 #include <algorithm>
 #include <functional>
 using namespace std;
 
 // This function reverses a string in place. For example,
 // if the original value of the string was \"cat\", the
 // value after reversing it is \"tac\".
 void reverseString(string& s){
    int i = 0, j = s.length() - 1;
    while(i < j){   swap(s[i++], s[j--]); }
 };
 
 int main(){
 // Create a vector of strings and allocate 100 elements worth of space
 // to start with.
    vector<string> theWords;
    theWords.reserve(100);
 // Create an iterator that will iterate over the strings in the input
 // stream cin. Also create an iterator that matches the end of the input.
    istream_iterator<string> stringReader(cin);
    istream_iterator<string> stringReaderEOF;
 
 // Read strings in one at a time and push them onto the vector.
    while(stringReader != stringReaderEOF){   theWords.push_back(*stringReader++); }
 
 // Show the words.
    cout << \"The words read in are:\ \";
 // 1: Fill in the function argument so that
 //    the output from this statement will be the words,
 //    one to a line. Do the same with each copy()
 //    call in the code below. See the sample output.
    copy( theWords.begin(), theWords.end(), std::ostream_iterator<string>( std::cout, \" \"));
//Make of copy of the input.
     vector<string> aCopy(theWords);
 // Now reverse all the strings in the copy and show the result.
 // 2: Complete the for_each call so that
 //    it will reverse every string in the copy.
    for_each( aCopy.begin(), aCopy.end(), reverseString );
    cout << \"\ After reversing all the strings in the copy:\ \";
    copy( aCopy.begin(), aCopy.end(), ostream_iterator<string>( cout, \" \"));
// 3. Sort the original strings in descending order.
 // Complete the sort call so that this call will
 //    sort the words in theWords in descending order.
    //sort( theWords.begin(), theWords.end(), less_than<string> );
    cout << \"\ After sorting the strings in descending order:\ \";
    copy( theWords.begin(), theWords.end(), ostream_iterator<string>( cout, \" \"));
 
 }


