Создать динамический двумерный массив на 10 ячеек (для десяти строк). Заполнить его строчками текста, принятыми с клавиатуры.
Реализовать меню:
1) Отсортировать строки по возрастанию;
2) Заменить все буквы "а" в массиве на цифру 0;
3) Развернуть все строки задом наперед;
4) В случайной строке заменить первые 3 символа на первые 3 символа введенного пользователем ключа (последовательности символов/строки)
5) Во всем массиве заменить первые 3 символа строки на строку «ааа»
Вот такой код имеем:
Код:
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
void user_menu(char **mss, int SIZE);
void input(char **mss, int SIZE);
void sort(char **mss, int SIZE);
void replace_all(char **mss, int SIZE);
void backwards(char **mss, int SIZE);
void replace_first_key(char **mss, int SIZE);
void replace_first(char **mss, int SIZE);
void clean(char **mss, int SIZE);
const int SIZE = 10;
void main()
{
char **mss = new char*[SIZE];
for (int i = 0; i < SIZE; i++)
{
mss[i] = new char;
}
input(mss, SIZE);
user_menu(mss, SIZE);
clean(mss, SIZE);
system("pause");
}
void user_menu(char **mss, int SIZE)
{
int repetition;
do {
int action = 0;
void(*menu_mss[])(char **, int) = { sort, replace_all, backwards, replace_first_key, replace_first };
cout << "\nМеню:" << endl;
cout << "1. Отсортировать строки по возрастанию" << endl;
cout << "2. Заменить все буквы ‘а’ в массиве на цифру 0" << endl;
cout << "3. Развернуть все строки задом наперед" << endl;
cout << "4. В случайной строке заменить первые 3 символа на первые 3 символа введенного пользователем ключа" << endl;
cout << "5. Во всем массиве заменить первые 3 символа строки на строку «ааа»" << endl;
cin >> action;
(*menu_mss[action - 1])(mss, SIZE);
cout << "Повторить?\n1. Да\n2. Нет" << endl;
cin >> repetition;
} while (repetition == 1);
}
void input(char **mss, int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
cout << "Введите " << i + 1 << " строку" << endl;
cin >> mss[i];
}
}
void sort(char **mss, int SIZE)
{
int number_str;
char temp;
cout << "Выберите строку (от 1 до " << SIZE << ")\n";
cin >> number_str;
number_str--;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
for (int j = 0; j < strlen(mss[number_str]) - 1; j++)
{
if (mss[number_str][j] > mss[number_str][j + 1])
{
temp = mss[number_str][j];
mss[number_str][j] = mss[number_str][j + 1];
mss[number_str][j + 1] = temp;
}
}
}
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
}
void replace_all(char **mss, int SIZE)
{
int number_str;
char temp;
cout << "Выберите строку (от 1 до " << SIZE << ")\n";
cin >> number_str;
number_str--;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
for (int j = 0; j < strlen(mss[number_str]) - 1; j++)
{
if (mss[number_str][j] == 'a')
mss[number_str][j] = '0';
}
}
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
}
void backwards(char **mss, int SIZE)
{
int number_str;
char temp;
cout << "Выберите строку (от 1 до " << SIZE << ")\n";
cin >> number_str;
number_str--;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
for (int i = strlen(mss[number_str]); i >= 0; i--)
{
cout << mss[number_str][i];
}
cout << endl;
}
void replace_first_key(char **mss, int SIZE)
{
int number_str;
char *key = new char;
cout << "Выберите строку (от 1 до " << SIZE << ")\n";
cin >> number_str;
number_str--;
cout << "\nВведите ключ" << endl;
cin >> key;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
for (int i = 0; i < 3; i++)
{
mss[number_str][i] = key[i];
}
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
}
void replace_first(char **mss, int SIZE)
{
int number_str;
cout << "Выберите строку (от 1 до " << SIZE << ")\n";
cin >> number_str;
number_str--;
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
for (int i = 0; i < 3; i++)
{
mss[number_str][i] = 'a';
}
for (int i = 0; i < strlen(mss[number_str]); i++)
{
cout << mss[number_str][i];
}
cout << endl;
}
Помогите переделать этот код чтобы он работал со всеми строками а не с одной. Подскажите где что поменять, как улучшить код в общем.