72 lines
2.2 KiB
C++
72 lines
2.2 KiB
C++
// sayings2.cpp -- using pointers to objects
|
|
// compile with string1.cpp
|
|
#include <iostream>
|
|
#include <cstdlib> // (or stdlib.h) for rand(), srand()
|
|
#include <ctime> // (or time.h) for time()
|
|
#include "string1.h"
|
|
const int ArSize = 10;
|
|
const int MaxLen = 81;
|
|
int main()
|
|
{
|
|
using namespace std;
|
|
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
|
|
|
|
if (total > 0)
|
|
{
|
|
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 << endl;
|
|
cout << "First alphabetically:\n" << * first << endl;
|
|
|
|
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 << endl;
|
|
delete favorite;
|
|
}
|
|
else
|
|
cout << "Not much to say, eh?\n";
|
|
cout << "Bye.\n";
|
|
// keep window open
|
|
/* if (!cin)
|
|
cin.clear();
|
|
while (cin.get() != '\n')
|
|
continue;
|
|
cin.get();
|
|
*/
|
|
return 0;
|
|
}
|