1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#include <string>
using namespace std;
template<typename T>
int NumUnique(const T *array, int n)
{
int unique = 1;
for(int i = 0; i < n - 1; i++)
if (array[i] != array[i+1])
unique++;
return unique;
}
template<typename T>
void PrintArray(const T *array, int count)
{
const T *ptr;
const T *const endPtr = array + count;
for (ptr = array; ptr < endPtr; ptr++)
cout << *ptr << " ";
cout << endl;
}
template<typename T>
void PrintAndCountUnique(const T *array, int n, string nameOfArray)
{
int numUnique;
cout << "Array " << nameOfArray << " contains:" << endl;
PrintArray(array, n);
numUnique = NumUnique(array, n);
cout << "and has " << numUnique << " unique element" << (numUnique > 1 ? "s." : ".") << endl << endl;
}
int main()
{
const int aCount = 5, bCount = 7, cCount = 7, dCount = 12;
int a[aCount] = {5, 5, 5, 5, 5};
double b[bCount] = {7.7, 6.6, 5.5, 4.4, 3.3, 2.2, 1.1};
char c[cCount] = {’r’, ’a’, ’c’, ’e’, ’c’, ’a’, ’r’};
string d[dCount] = {"Cadillac", "Oldsmobile", "Chevrolet", "Toyota", "Lexus", "Dodge", "GMC", "BMW", "BMW", "GMC", "Dodge", "Lexus"};
PrintAndCountUnique(a, aCount, "a");
PrintAndCountUnique(b, bCount, "b");
PrintAndCountUnique(c, cCount, "c");
PrintAndCountUnique(d, dCount, "d");
return 0;
}
|