Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2015, 20:55   #1
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
Сообщение Помогите доработать прогу

Создать динамический двумерный массив на 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;
}
Помогите переделать этот код чтобы он работал со всеми строками а не с одной. Подскажите где что поменять, как улучшить код в общем.
Андрей Иванов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
asm помогите доработать прогу (вычислить выражение 2*(6a+b)^3/c + c*(2d^2-c)/3a) S4estliv4ik Помощь студентам 5 23.06.2014 12:45
Помочь с курсовой.Чуток доработать прогу+алгоритм alexjif Фриланс 0 23.05.2013 15:56
доработать прогу ronny137 Фриланс 1 21.04.2011 19:08
Нужно доработать прогу в ПАСКАЛЕ Nubik Помощь студентам 2 21.12.2009 00:09
Протестите прогу, и посоветуйте, что доработать) Krechet Софт 23 12.08.2009 16:20