home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / EX03004.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  877 b   |  38 lines

  1. // ex03004.cpp
  2. // the C++ free store: more dynamic array allocation
  3. #include <iostream.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. // ---------- compare function to sort array of pointers
  8. extern "C"    {
  9. int comp(const void *a, const void *b)
  10. {
  11.     return strcmp(*(char **)a, *(char **)b);
  12. }
  13. }
  14.  
  15. main()
  16. {
  17.     cout << "How many names at most? ";
  18.     int maxnames;
  19.     cin >> maxnames;
  20.     char **names = new char *[maxnames];
  21.     for (int namect = 0; namect < maxnames; namect++)    {
  22.         cout << "Enter a name: ";
  23.         char *name = new char[80];
  24.         cin >> name;
  25.         if (strcmp(name, "end") == 0)
  26.             break;
  27.         names[namect] = new char[strlen(name)+1];
  28.         strcpy(names[namect], name);
  29.         delete name;
  30.     }
  31.     qsort(names, namect, sizeof(char *), comp);
  32.     for (int i = 0; i < namect; i++)
  33.         cout << names[i] << '\n';
  34.     for (i = 0; i < namect; i++)
  35.         delete names[i];
  36.     delete names;
  37. }
  38.