Форум программистов, компьютерный форум CyberForum.ru

Программа зацикливается при изменении всех 2 на 2 - C++

Восстановить пароль Регистрация
 
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 12:44     Программа зацикливается при изменении всех 2 на 2 #1
C++
1
2
3
4
5
6
7
8
9
void ExchangeWord(List **ListPtr, int pozition, char *word){    //заменяет слово на позиции
    if(*ListPtr!=NULL){     // условие завершения рекурсивного спуска
        if((*ListPtr)->pozition!=pozition)
            ExchangeWord(&((*ListPtr)->next),pozition,word);    // рекурсивный вызов функции
        else{
            strcpy((*ListPtr)->word,word);
        }
    }
}
как сделать так
чтобы когда у меня последовательность 1 2 2 3
и я хочу все 2 заменить на 2
она не зацикливалась
а начинала с того места, с которого останавливалась
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 12:52     Программа зацикливается при изменении всех 2 на 2 #2
Цитата Сообщение от EtoTema Посмотреть сообщение
как сделать так
чтобы когда у меня последовательность 1 2 2 3
и я хочу все 2 заменить на 2
2 на 2. И что-то должно измениться?
Тогда так
C++
1
2
3
4
5
void fun ( char *s )
{
    for ( ; *s ; ++s )
        *s = ((*s == '2') ? '2' : *s) ;
}
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 12:55  [ТС]     Программа зацикливается при изменении всех 2 на 2 #3
нет.программа зацикливается из-за того, что она меняет все двойки на двойки. и повторяется в том же месте бесконечно.а надо чтобы оставляла этот элемент и меняла следующий.

В проге надо что то добавить,чтобы прога не зацикливалась..
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 12:59     Программа зацикливается при изменении всех 2 на 2 #4
EtoTema, может задание точно должно так звучать: заменить каждую серию подряд идучих двоек на одну двойку, например
1 2 2 2 3 2 2 -> 1 2 3 2
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:00  [ТС]     Программа зацикливается при изменении всех 2 на 2 #5
Программа ввода последовательности.эта подпрограмма заменяет элементы последовательности. я ввожу не обязательно двойки, а несколько одинаковых элементов.
и она зацикливается на замене всех элементов, на такие же
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:03     Программа зацикливается при изменении всех 2 на 2 #6
Тогда может так надо сформулировать : заменить каждую серию подряд идущих одинаковых элементов на одного представителя данной серии, например,

1 2 2 3 3 3 4 4 -> 1 2 3 4

Вы поймите, задачу надо четко формулировать
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:07  [ТС]     Программа зацикливается при изменении всех 2 на 2 #7
Нет
у меня последовательность
1
2
3
2
2
к примеру
Я прошу заменить все двойки на двойки. Должно получится
1
2
3
2
2
Но программа зацикливается(ломается рекурсия).
Нужно что то добавить, чтобы программа заменяла все двойки на двойки и не зацикливалась
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:09     Программа зацикливается при изменении всех 2 на 2 #8
EtoTema, я так понимаю, вы пытаетесь осуществить тождественное преобразование. Тогда и делать то ничего не надо, раз ничего не должно измениться
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 13:10     Программа зацикливается при изменении всех 2 на 2 #9
Цитата Сообщение от EtoTema Посмотреть сообщение
Я прошу заменить все двойки на двойки. Должно получится
А я разве не это во втором посте написал?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:15     Программа зацикливается при изменении всех 2 на 2 #10
Цитата Сообщение от EtoTema Посмотреть сообщение
(ломается рекурсия)
Вот вам вариант от go, только через рекурсию

C
1
2
3
4
5
6
7
8
void Transform(char *s)
{
    if (*s)
    {
         *s = ((*s == '2') ? '2' : *s);
         Transform(s + 1);
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 13:21     Программа зацикливается при изменении всех 2 на 2
Еще ссылки по теме:

Задание на ряды: программа зацикливается при вводе некоторых значений C++
При вводе слишком большого числа программа зацикливается C++
C++ Программа зацикливается

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:21  [ТС]     Программа зацикливается при изменении всех 2 на 2 #11
Вы можете мой текст изменить (: пжл
Yandex
Объявления
13.01.2012, 13:21     Программа зацикливается при изменении всех 2 на 2
Ответ Создать тему
Опции темы

Текущее время: 09:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru