// sayings2.cpp -- uses pointers to objects
// compile with strng2.cpp
#include <iostream>
using namespace std;
#include <cstdlib>      // (or stdlib.h) for rand(), srand()
#include <ctime>        // (or time.h) for time()
#include "strng2.h"
const ArSize = 10;
const MaxLen = 81;
int main()
{
    String name;
    cout <<"Hi, what's your name?\n>> ";
    cin >> name;
    
    cout << name << ", please enter up to " << ArSize
        << " short sayings <empty line to quit>:\n";
    String sayings[ArSize];
    char temp[MaxLen];               // temporary string storage
    int i;
    for (i = 0; i < ArSize; i++)
    {
        cout << i+1 << ": ";
        cin.get(temp, MaxLen);
        while (cin && cin.get() != '\n')
            continue;
        if (!cin || temp[0] == '\0') // empty line?
            break;                   // i not incremented
        else
            sayings[i] = temp;       // overloaded assignment
    }
    int total = i;                   // total # of lines read

    cout << "Here are your sayings:\n";
    for (i = 0; i < total; i++)
        cout << sayings[i] << "\n";

// use pointers to keep track of shortest, first strings
    String * shortest = &sayings[0]; // initialize to first object
    String * first = &sayings[0];
    for (i = 1; i < total; i++)
    {
        if (sayings[i].length() < shortest->length())
            shortest = &sayings[i];
        if (sayings[i] < *first)     // compare values
            first = &sayings[i];     // assign address
    }
    cout << "Shortest saying:\n" << * shortest << "\n";
    cout << "First alphabetically:\n" << * first << "\n";

    srand(time(0));
    int choice = rand() % total;     // pick index at random
// use new to create, initialize new String object
    String * favorite = new String(sayings[choice]);
    cout << "My favorite saying:\n" << *favorite << "\n";
    delete favorite;
    return 0;
}

