Вопрос № 54915: Здравствуйте!
Почему-то получается беcконечный цикл, если пользователь вводит для znak[11] значение меньше 11.
Если условие c<=11 заменить на с<12 тогда все работает для любых значений znak[11].
Растолкуйте, пожалуйста, в чем секрет...
Вопрос № 54.915
Здравствуйте!
Почему-то получается беcконечный цикл, если пользователь вводит для znak[11] значение меньше 11.
Если условие c<=11 заменить на с<12 тогда все работает для любых значений znak[11].
Растолкуйте, пожалуйста, в чем секрет?
Borland С++ Builder 6.
Приложение:
Отправлен: 10.09.2006, 12:35
Вопрос задал: Юpий (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: InviZ
Здравствуйте, Юpий!
У вас повреждается стек.
В квадратных скобках при объявлении массива указывается количество элементов массива.
int znak[11] - это объявление массива из 11 элементов - с индексами от 0 до 10...
Ответ отправил: InviZ (статус: 3-ий класс)
Ответ отправлен: 10.09.2006, 12:58 Оценка за ответ: 5
Отвечает: Vaga
Здравствуйте, Юpий!
В вашем случае for должен иметь 11 циклов, а не 12, как следует из условия. Массив znak состоит из 11 элементов, и потому znak[11] просто нет.
--------- Вольному - воля
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 10.09.2006, 20:47 Оценка за ответ: 5
Отвечает: dentist
Здравствуйте, Юpий!
во первых объявление массива znak[11] говорит о том что массив размером 11 элементов а не 12 (с чего вы это взяли не пойму).
соответственно в цикле необходимо писать так:
for(int c = 0; c < 11; c++)
дело в том, что нумерация элементов массива начинается с 0 (ноль) а не с единицы.
т.е. в znak[11] номера элементов от 0 до 10
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 3-ий класс)
Ответ отправлен: 12.09.2006, 14:47 Оценка за ответ: 5