#include
#include
Using namespace std;
Void DataInput (char ** a); // data input module
INT Datasearch (char * a, char ** b); // Word Finding Module
Void DataReplace (Char * A, Char * B, Char ** C, INT D); // Word Replacement Module
Void DataShow (char ** a); // Data View Module
INT number; // Total number of words stored
int main ()
{
Int key; // Control various functions with a digital
INT N; // Replace or delete the number of words
Char * word1 = new char [50]; // Find words
Char * word2 = new char [50]; // Replace the word
COUT << "Please enter the number of words stored:";
CIN >> Number; // ******** This allows letters here to crash ******* Can join the detection input function to improve
Char ** p = new char * [number]; // 2D pointer points to stored data
For (int i = 0; i p [i] = new char [50]; // The maximum length of each word is DataInput (p); While (Key! = 5) // Key to exit the program for 5 { Cout << "Please select the action: / n" << "All replacement; (2) All deletion; (3) Find; (4) View the current state; (5) Exit; / n"; CIN >> KEY; IF (Key == 1) { Cout << "needs to be replaced with:"; CIN >> WORD2; While (cin.get ()! = '/ n') // Avoid input and jumps that enters multiple spaces ; For (int i = 0; i STRCPY (P [I], Word2); COUT << "/ n All replacements! / n / n"; } ELSE IF (key == 2) { Cout << "Do you want to delete all? Enter y to determine, the other key cancels; CHAR TEMP; CIN >> TEMP; While (cin.get ()! = '/ n') ; IF (Temp == 'Y' || TEMP == 'Y') { STRCPY (Word2, "); For (int i = 0; i STRCPY (P [I], Word2); COUT << "/ n All delete completed! / n"; } Cout << Endl; } Else IF (key == 3) { WHILE (key == 3) // Find the loop again { Cout << "Please enter the word you want to find:"; CIN >> Word1; Int result = Datasearch (Word1, P); COUT << "/ nCrecain found" << result << "one of the same words / N / N"; IF (Result! = 0) { Cout << "Please select an action: / n" << "(1) Replace; (2) delete; (3) lookup; (4) View the current state; (5) Exit; / n"; CIN >> KEY; IF (Key == 1) { Cout << "/ N wants to replace several?" CIN >> N; While (n> result) { Cout << "Input error, currently only find" << Result << "alternative words, please re-enter:"; CIN >> N; While (cin.get ()! = '/ n') ; } Cout << "/ n To replace:"; CIN >> WORD2; While (cin.get ()! = '/ n') ; DataReplace (Word1, Word2, P, N); } ELSE IF (key == 2) { Cout << "/ N want to delete a few?" CIN >> N; While (n> result) { Cout << "/ N input error, currently only finding" << result << "can delete words, please re-enter:"; CIN >> N; While (cin.get ()! = '/ n') ; } STRCPY (Word2, "); DataReplace (Word1, Word2, P, N); } Else IF (key == 3) Key = 3; // Continue to find Else IF (key == 4) { Cout << "/ n The current stored data is as follows: / n"; DataShow (P); } Else IF (key == 5) Key = 5; // Exit system } ELSE // Find results, jump out of the loop Break; } } Else IF (key == 4) { Cout << "/ n The current stored data is as follows: / n"; DataShow (P); } Else IF (key == 5) Key = 5; // Exit system } Cout << "/ n / n program end, thank you! ^ o ^ / n"; Delete [] Word1; Delete [] Word2; Delete [] P; Return 0; } Void DataInput (char ** a) { Cout << "/ n input word: / n" by one by one; For (int i = 0; i { COUT << "#" << i 1 << ":" CIN >> A [I]; While (cin.get ()! = '/ n') // Avoid input and jumps that enters multiple spaces ; } Cout << "/ n word input is completed! / n / n"; } INT Datasearch (char * a, char ** b) { INT count = 0; // Record the number of words that conform to the requirements For (int i = 0; i { IF (strcmp (a, b [i]) == 0) COUNT ; } Return count; } Void DataReplace (Char * A, Char * B, Char ** C, INT D) { INT TEMP = D; // Statistical replacement number For (int i = 0; i { IF (strcmp (a, c [i]) == 0) { STRCPY (C [I], B); TEMP -; } IF (Temp == 0) Break; } Cout << "/ n operation complete! / n / N"; } Void DataShow (char ** a) { For (int i = 0; i { COUT << a [i] << " IF ((i 1)% 5 == 0) Cout << Endl; } Cout << Endl; }