#include <iostream>
using namespace std;
#include <string.h>
#include "ReadString.h"
void Sort (char **, int);
void main ()
{
const int MaxStrings (20);
char * StringArray [MaxStrings];
bool Continue;
int NumStrings;
cout << "Enter a maximum of 20 words:"<<endl;
NumStrings = 0;
do {
StringArray [NumStrings] = ReadString ();
Continue = strlen (StringArray [NumStrings]) > 0;
if (Continue)
NumStrings++;
else
delete [] StringArray [NumStrings];
} while (Continue && (NumStrings < MaxStrings));
for (int i = 0; i < NumStrings; i++)
cout << "StringArray [" << i << "] is " << StringArray [i] << endl;
for (int i = 0; i < NumStrings; i++)
delete [] StringArray [i];
int NumStringsRequested;
int NumStringsEntered;
char ** Array2D;
NumStringsRequested = 15;
Array2D = new char * [NumStringsRequested];
NumStringsEntered = 0;
do {
Array2D [NumStringsEntered] = ReadString (); // *(Array2D + NumStringsEntered) = ReadString ();
Continue = strlen (Array2D [NumStringsEntered]) > 0;
if (Continue)
NumStringsEntered++;
else
delete [] Array2D [NumStringsEntered];
} while (Continue && (NumStringsEntered < NumStringsRequested));
for (int i = 0; i < NumStringsEntered; i++)
cout << "Array2D [" << i << "] is " << Array2D [i] << endl;
for (int i = 0; i < NumStringsEntered; i++)
delete [] Array2D [i];
delete [] Array2D;
}
void Sort (char ** Array2D, int NumStrings)
{
char * pTemp;
bool Sorted;
NumStrings--;
for (int i = 0; i < NumStrings; i++)
if (strcmp (Array2D [i], Array2D [i + 1]) > 0)
{
pTemp = Array2D [i];
Array2D [i] = Array2D [i + 1];
Array2D [i + 1] = pTemp;
Sorted = false;
}
}
Here is the readstring.cpp file
#include <iostream>
using namespace std;
#include <memory.h> // for memcpy
#include "ReadString.h"
char * ReadString ()
{
const int FirstStringSize (20);
int CurrentLength (0);
int CurrentSize (FirstStringSize);
char * pString;
char * pTempString;
char c;
pString = new char [CurrentSize + 1];
while ((c = cin.get ()) != '\n')
{
pString [CurrentLength++] = c;
if (CurrentLength >= CurrentSize)
{
CurrentSize += FirstStringSize;
pTempString = new char [CurrentSize + 1];
memcpy (pTempString, pString, CurrentLength);
delete [] pString;
pString = pTempString;
}
else;
}
pString [CurrentLength] = '\0';
return pString;
}
*** MOD EDIT: Added code tags. Please
This post has been edited by JackOfAllTrades: 04 November 2009 - 11:05 AM

New Topic/Question
Reply




MultiQuote





|