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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2014, 10:28   #1
axpehuct123
Пользователь
 
Регистрация: 09.04.2014
Сообщений: 12
По умолчанию Рекурсивный перебор

Нужно сделать перебор всех возможных вариантов слов из К букв, которое вводится вручную. Собственно вопрос в том, что вроде как перебор реализовал, но при выводе между словами печатается несколько одиночных символов и если ввести К< 4, то перебор странно работает совсем.
Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <string>
using std::string;

string temp[100];

void perebor(int pos, int K)
{
	string array[4] = {"Ы", "Ц", "Щ", "О"};

	if (pos >= K)
	{
		return;
	}

	int i;

	for(i = 0; i < 4; i++)
	{
		temp[pos] = array[i];
		perebor(pos + 1, K);
		cout << temp[i];
	}
	cout << endl;
	
}

int main()
{ 
	setlocale(LC_ALL, "");
	int K = 0;

	cin >> K;
	perebor(0, K);

	system("pause");
	return 0;
}

Последний раз редактировалось Stilet; 05.12.2014 в 10:57.
axpehuct123 вне форума Ответить с цитированием
Старый 05.12.2014, 22:36   #2
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Так у вас ведь рекурсия чёрт знает как устроена! Если сделаете ручной просчёт, увидите, что всё совсем криво.
На глаз так (могу оказаться неправым) скажу, что вывод логичнее бы делать в блоке
Код:
if (pos >= k)
{
    // ...
}
А то получается, что перебрались все трёхбуквенные слова (при этом они вывелись на экран), а потом выходить первая буква четырёхбуквенного перебора... Да ещё у вас одновременно используется array[i] и temp[i]. i - это всё-таки номер в алфавите перебираемой буквы или индекс в строке символа, который перебирается? (подсказка: это номер перебираемой буквы)))
БалаШагаЛ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перебора вариантов (изменить перебор цифровой на перебор буквенный) BArt2000 Паскаль, Turbo Pascal, PascalABC.NET 5 02.03.2015 12:56
Рекурсивный медод C# newcome1 Помощь студентам 1 21.03.2013 16:45
Рекурсивный поиск zumm Общие вопросы Delphi 7 01.11.2010 22:47
C# - Рекурсивный метод Ronnie Помощь студентам 2 10.06.2010 08:30
рекурсивный алгоритм. Nelson1992 Помощь студентам 9 21.03.2010 12:09