Source of adjacent_find2a.cpp


  1: //adjacent_find2a.cpp

  3: #include <iostream>
  4: #include <vector>
  5: #include <algorithm>
  6: using namespace std;

  8: /**
  9: Determines whether two integers are both divisible by 5.
 10: Pre:\n m and n contain integers.
 11: Post:\n Returns true if m and n are both divisible by 5,
 12: and otherwise returns false.
 13: */
 14: bool bothDivisibleByFive
 15: (
 16:     int m, //in
 17:     int n  //in
 18: )
 19: {
 20:     return (m%5 == 0) && (n%5 == 0);
 21: }

 23: int main()
 24: {
 25:     cout << "\nThis program illustrates the use of the STL "
 26:         "adjacent_find() algorithm\n(extended version) to find "
 27:         "adjacent pairs of integers that are both\ndivisible by 5 "
 28:         "in a vector of integers.";
 29:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 31:     int a[] = {10, 21, 33, 40, 50, 60, 72, 77, 80, 95, 101};
 32:     vector<int> v(a, a+11);
 33:     cout << "\nHere are the values in the vector:\n";
 34:     for (vector<int>::size_type i=0; i<v.size(); i++)
 35:         cout << v.at(i) << " ";
 36:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 38:     vector<int>::iterator p = 
 39:         adjacent_find(v.begin(), v.end(), bothDivisibleByFive);
 40:     if (p == v.end())
 41:         cout << "\nThere are no, or no more, matching pairs.";
 42:     else
 43:         cout << "\nThe first value of the first matching pair is "
 44:             << *p << ".";
 45:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 47:     p = adjacent_find(p+1, v.end(), bothDivisibleByFive);
 48:     if (p == v.end())
 49:         cout << "\nThere are no, or no more, matching pairs.";
 50:     else
 51:         cout << "\nThe first value of the next matching pair is "
 52:             << *p << ".";
 53:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 55:     p = adjacent_find(p+1, v.end(), bothDivisibleByFive);
 56:     if (p == v.end())
 57:         cout << "\nThere are no, or no more, matching pairs.";
 58:     else
 59:         cout << "\nThe first value of the next matching pair is "
 60:             << *p << ".";
 61:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 63:     p = adjacent_find(p+1, v.end(), bothDivisibleByFive);
 64:     if (p == v.end())
 65:         cout << "\nThere are no, or no more, matching pairs.";
 66:     else
 67:         cout << "\nThe first value of the next matching pair is "
 68:             << *p << ".";
 69:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 70: }