|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.01.2012, 13:30 | #1 |
Пользователь
Регистрация: 09.12.2011
Сообщений: 27
|
зацикливание
Если последний элемент строки - заглавная буква, то происходит зацикливание. Посмотрите что не так.
Код:
|
23.01.2012, 13:34 | #2 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
Может потому что где-то там лежит символ конца строки?
Код:
Код:
и не удалять из строки, а копировать в другую строковую переменную. Ну или сразу выводить.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
23.01.2012, 13:34 | #3 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Начнем с того, что изменять переменную-счетчик в цикле For — глупость из глупостей
Благодарить в репутацию. Проклинать — туда же
|
23.01.2012, 13:36 | #4 |
Пользователь
Регистрация: 09.12.2011
Сообщений: 27
|
|
23.01.2012, 13:40 | #5 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Тогда он потом обращается ЗА границы массива символов "а" (строка есть массив симвалов, ага?)
Длина массива, ясен пень, уменьшится после удаления одного символа, а ОБЛАСТЬ ПАМЯТИ - нет. На примере: а = "abcD" символ "D" будет удален, i станет равна 3м. На следующей итерации она опять станет равна 4м и обратится к несуществующему 4му символу в "а". А там, ВНЕЗАПНО, осталась наша старая добрая "D". И так пока конец света не настанет Access Violation вообще за такие вещи положен
Благодарить в репутацию. Проклинать — туда же
|
23.01.2012, 13:42 | #6 |
Пользователь
Регистрация: 09.12.2011
Сообщений: 27
|
пойду осмысливать вышесказанное) и зарядка на ноуте кончается....
|
23.01.2012, 13:43 | #7 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
А можно само задание?
на неконкретные вопросы даю неконкретные ответы ...
|
23.01.2012, 13:44 | #8 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
замените цикл for на цикл while (i <= length(a)) и будет вам счастье только переменную i не забудьте увеличивать при каждом прохождении цикла. И инициализируйте её перед использованием)
Благодарить в репутацию. Проклинать — туда же
|
23.01.2012, 13:45 | #9 |
Пользователь
Регистрация: 09.12.2011
Сообщений: 27
|
почему там D останется?
|
23.01.2012, 13:53 | #10 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Потому что длина массива символов изменится (число поменяется), участок памяти размером в один символ будет считаться освобожденным (его сможет использовать какая-нибудь другая программа), а само содержимое ячейки памяти никто менять не будет. А в массивах элементы располагаются в памяти строго по порядку, это вам не списки
"D" там останется необязательно: эту область памяти может успеть забрать себе и перезаписать какая-нибудь другая программа. Но в вашем случае других программ нет, один турбопаскаль. Так что "D" в памяти никто не потревожит
Благодарить в репутацию. Проклинать — туда же
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Зацикливание C++ | Shift_sk | Общие вопросы C/C++ | 5 | 18.01.2011 19:01 |
Рекурсивное зацикливание | Alex_Almaty | Помощь студентам | 8 | 06.07.2010 07:49 |
Зацикливание программы | Arcanum | Общие вопросы Delphi | 7 | 12.04.2010 10:20 |
Зацикливание в паскале. | sir.andrey | Помощь студентам | 2 | 19.03.2010 13:57 |
Почему получается зацикливание?? | _Studentka_ | Общие вопросы по Java, Java SE, Kotlin | 1 | 09.12.2009 02:13 |