Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
EtoTema
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 28
#1

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

13.01.2012, 12:44. Просмотров 657. Ответов 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 зацикливается программа при введении букв. - C++
Приветствую всех новых знакомых в этом храме программирования. Я новичек, пытаюсь программировать в С++ недавно. У меня возник вопрос...

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

При вводе слишком большого числа программа зацикливается - C++
При вводе слишком большого числа идет зацикливание(вроде так)помогите исправить #include <iostream> #include <cstdlib> #include...

Задание на ряды: программа зацикливается при вводе некоторых значений - C++
Здравствуйте, решал вузовское задание "на дом". Написал код. Однако при вводе некоторых значений программа зацикливается. В чём может быть...

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

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

10
go
Эксперт С++
3586 / 1366 / 129
Регистрация: 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 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 12:55  [ТС] #3
нет.программа зацикливается из-за того, что она меняет все двойки на двойки. и повторяется в том же месте бесконечно.а надо чтобы оставляла этот элемент и меняла следующий.

В проге надо что то добавить,чтобы прога не зацикливалась..
0
Thinker
Эксперт С++
4230 / 2204 / 150
Регистрация: 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 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:00  [ТС] #5
Программа ввода последовательности.эта подпрограмма заменяет элементы последовательности. я ввожу не обязательно двойки, а несколько одинаковых элементов.
и она зацикливается на замене всех элементов, на такие же
0
Thinker
Эксперт С++
4230 / 2204 / 150
Регистрация: 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 / 0
Регистрация: 02.05.2011
Сообщений: 28
13.01.2012, 13:07  [ТС] #7
Нет
у меня последовательность
1
2
3
2
2
к примеру
Я прошу заменить все двойки на двойки. Должно получится
1
2
3
2
2
Но программа зацикливается(ломается рекурсия).
Нужно что то добавить, чтобы программа заменяла все двойки на двойки и не зацикливалась
0
Thinker
Эксперт С++
4230 / 2204 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.01.2012, 13:09 #8
EtoTema, я так понимаю, вы пытаетесь осуществить тождественное преобразование. Тогда и делать то ничего не надо, раз ничего не должно измениться
1
go
Эксперт С++
3586 / 1366 / 129
Регистрация: 16.04.2009
Сообщений: 4,527
13.01.2012, 13:10 #9
Цитата Сообщение от EtoTema Посмотреть сообщение
Я прошу заменить все двойки на двойки. Должно получится
А я разве не это во втором посте написал?
1
Thinker
Эксперт С++
4230 / 2204 / 150
Регистрация: 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 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

программа зацикливается - C++
помогите скажите пожалуйста почему моя программа зацикливается #include<stdio.h> #include<conio.h> #include<math.h> ...

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

Программа зацикливается - C++
void __fastcall TForm1::Button1Click(TObject *Sender) { int k; float a,sum,x; a=StrToFloat(Edit1->Text); k=1; sum=0; ...

Программа зацикливается - C++
Программа зацикливается после ввода размеров массива. Подскажите пожалуйста, где ошибка. #include <iostream> void inn(int **, int,...


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

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

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