Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
EtoTema
0 / 0 / 1
Регистрация: 02.05.2011
Сообщений: 28
#1

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

13.01.2012, 12:44. Просмотров 680. Ответов 10
Метки нет (Все метки)

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
она не зацикливалась
а начинала с того места, с которого останавливалась
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 12:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программа зацикливается при изменении всех 2 на 2 (C++):

При использовании оператора GOTO зацикливается программа при введении букв.
Приветствую всех новых знакомых в этом храме программирования. Я новичек,...

При вводе символа программа зацикливается
Я пытался создать программу, которая при вводе отрицательного или типа не int...

Программа зацикливается при вводе некорректных данных
Доброго дня. Уже искал по форуму, нашел много похожих тем, но предложенные там...

При вводе слишком большого числа программа зацикливается
При вводе слишком большого числа идет зацикливание(вроде так)помогите исправить...

При вводе в переменную нетипичного ей символа программа зацикливается
Проблема в том, что если ввести в программу символ отличный от цифры то...

Задание на ряды: программа зацикливается при вводе некоторых значений
Здравствуйте, решал вузовское задание "на дом". Написал код. Однако при вводе...

10
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
13.01.2012, 12:52 #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) ;
}
1
EtoTema
0 / 0 / 1
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 12:55  [ТС] #3
нет.программа зацикливается из-за того, что она меняет все двойки на двойки. и повторяется в том же месте бесконечно.а надо чтобы оставляла этот элемент и меняла следующий.

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

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

Вы поймите, задачу надо четко формулировать
1
EtoTema
0 / 0 / 1
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:07  [ТС] #7
Нет
у меня последовательность
1
2
3
2
2
к примеру
Я прошу заменить все двойки на двойки. Должно получится
1
2
3
2
2
Но программа зацикливается(ломается рекурсия).
Нужно что то добавить, чтобы программа заменяла все двойки на двойки и не зацикливалась
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:09 #8
EtoTema, я так понимаю, вы пытаетесь осуществить тождественное преобразование. Тогда и делать то ничего не надо, раз ничего не должно измениться
1
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
13.01.2012, 13:10 #9
Цитата Сообщение от EtoTema Посмотреть сообщение
Я прошу заменить все двойки на двойки. Должно получится
А я разве не это во втором посте написал?
1
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:15 #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);
    }
}
1
EtoTema
0 / 0 / 1
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:21  [ТС] #11
Вы можете мой текст изменить (: пжл
0
13.01.2012, 13:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 13:21
Привет! Вот еще темы с решениями:

Почему при изменении литерала const char* программа падает?
точнее литерала. ладно, если бы выходил за пределы

Программа входит в бесконечный цикл при изменении двумерного массива
Написал код для задания: "Ввести двумерный массив А (NxM). Каждый второй...

Зацикливается программа
Нужно сделать стек из элементов и вывести все положительные значения. Программа...

программа зацикливается
помогите скажите пожалуйста почему моя программа зацикливается...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru