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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2011, 17:14   #1
Бинари
Пользователь
 
Регистрация: 23.09.2011
Сообщений: 17
По умолчанию [C++]Добавить подстроку к каждой заданной подстроке

Собственно, алгоритм нормально работает, если существует только одна подстрока. Я прошу подсказать, как его исправить, чтобы он заработал и в том случае, когда заданная подстрока встречается более одного раза.

Код:
while (k)
{
	for (i = 0,j=0; i < k; i++)
		newstr[j++] = x[i];
	for (i = 0, j= k; i < zlen; i++)
		newstr[j++] = z[i];
	for (i = k, j = k + zlen; i < xl; i++)
		newstr[j++] = x[i];
	newstr[j] = '\0';
	for (int i = 0; i < k; i++)
			*(x+i) = *(x+k+i);
	k = BoyerMooreHorspool(x,y); //Функция возвращает индекс последнего элемента подстроки
}
Логическую ошибку я знаю: я меняю переменную x, но не могу понять, как её можно исправить. Я пытался менять x на вспомогательную строку helpstr, но это приводит к полной неработоспособности программы.

Последний раз редактировалось Бинари; 13.10.2011 в 19:13.
Бинари вне форума Ответить с цитированием
Старый 14.10.2011, 07:40   #2
Бинари
Пользователь
 
Регистрация: 23.09.2011
Сообщений: 17
По умолчанию

Исправил код на следующий. Стало работать лучше, но он добавляет только к первой найденной подстроке. Подскажите, как его исправить.

Код:
	while (k)
		{
		for (i = 0,j=0; i < k; i++)
			newstr[j++] = x[i];
		for (i = 0, j= k; i < zlen; i++)
			newstr[j++] = z[i];
		for (i = k, j = k + zlen; i < xl; i++)
			newstr[j++] = x[i];
		newstr[j] = '\0';
		for (int i = 0; i < k; i++)
			*(helpstr+i) = *(x+k+i);
		*(helpstr+k)='\0';
		int m = BoyerMooreHorspool(helpstr,y);
		k = m ? k+m : m;
		}
Бинари вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить текст в конце каждой строки memo donpizzz Компоненты Delphi 4 20.05.2012 16:25
Как добавить в конце каждой строке? Anton62 Помощь студентам 3 07.05.2010 12:19
Delphi. как добавить в Memo 5 строк, длина каждой 10 символов. Nostalgia Помощь студентам 3 21.03.2010 12:31
Как добавить сразу несколько ячеек к каждой ячейке некоего диапазона? eugenerud Microsoft Office Excel 20 24.07.2009 19:18
Как печатать в верхней подстроке в Delphi например 2 в квадрате Moel Общие вопросы Delphi 3 19.06.2008 15:30