0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 14
|
||||||
1 | ||||||
Ошибка в цикле while09.09.2012, 01:30. Показов 2298. Ответов 28
Метки нет (Все метки)
Привет всем! Ниже приведен код программы, в программе две функции одна change() переводит Ф.И.О в формат фамилия - инициалы, а вторая polindrom() с которой собственно и проблема - ищет в введенной пользователем строке полиндромы и выводит их на экран. Программа создана в VS2010. Ошибок в данной программе компилятор не обнаруживает, но программа вылетает и отладчик указывает на то что в строке где определяется конец текущего слова (помечена комментарием) возникает бесконечный цикл и условие не срабатывает.
0
|
09.09.2012, 01:30 | |
Ответы с готовыми решениями:
28
Ошибка в цикле Ошибка в цикле Ошибка в цикле Ошибка в цикле |
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 14
|
|
09.09.2012, 02:27 [ТС] | 21 |
Так ее тоже выкидывает. В написали условие - если после после пробела идет конец строки тогда завершить. Напомню мне необходимо условие что если после символа следует пробел или конец строки (если это последнее слово в строке) тогда прекратить наращивать счетчик
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
09.09.2012, 02:33 | 22 | |||||
В этом коде выкидывает?
Код
Добавлено через 3 минуты Так и работает. Поставьте точку остановки и посмотрите сами.
0
|
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 14
|
|
09.09.2012, 02:33 [ТС] | 23 |
В 34 строке такое же условие (функция change) все прекрасно работает. Ну посмотрит программа в ячейку str[-1](если это первое слово), увидит там какую-нибудь муру и оперативки типа 487484151564 - оно ж все равно не будет равно пробелу или его коду в ascii и условие нормально выполнится тут причина сокрыта где-то в другом месте.
0
|
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 14
|
|
09.09.2012, 02:38 [ТС] | 25 |
Да большое спасибо действительно работает корректно,теперь пойду смотреть что там дальше не так.
0
|
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 14
|
|
09.09.2012, 02:42 [ТС] | 27 |
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
09.09.2012, 03:30 | 28 | |||||
При || выход из цикла будет если оба условия не выполнятся, т.е. str[p] должен одновременно стать равен и ' ' и '\0'. И как по вашему, где это произойдёт?
Добавлено через 24 минуты Добавлю. Diezel2012, вы эту строчку лучше так напишите:
Добавлено через 8 минут Еще. Там, где объявляете bool flag;, присвойте ему значение, а то при переходе к третьему if, минуя второй, будет обращение к неинициализированной переменной. Добавлено через 5 минут Сделал, как посоветовал и код, в общем-то, заработал.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
09.09.2012, 04:05 | 29 | |||||
Но в коде есть баг. Полиндромы определяются только до обычного слова.
Добавлено через 19 минут Понял. В начале for() нужно устанавливать flag = true. Код
0
|
09.09.2012, 04:05 | |
09.09.2012, 04:05 | |
Помогаю со студенческими работами здесь
29
Ошибка в цикле while Ошибка в цикле Ошибка в цикле Ошибка в цикле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |