Вопрос № 145931: Здравствуйте, уважаемые эксперты! Впроцессе выполнгения программы в приложении, ни с того ни с сего переменные обнуляются. От чего такое может случаться? Компилятор Borland C 3.1 Спасибо...
Вопрос № 145.931
Здравствуйте, уважаемые эксперты! Впроцессе выполнгения программы в приложении, ни с того ни с сего переменные обнуляются. От чего такое может случаться? Компилятор Borland C 3.1 Спасибо
Приложение:
Отправлен: 04.10.2008, 06:55
Вопрос задал: LexXx (статус: Практикант)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Boriss
Здравствуйте, LexXx! Ну-таки это естественно. Хотите фокус: поставьте массив а последним и эффект исчезнет . Или по-другому, присваивайте значение 2345 - и именно это значение приобретут Ваши многострадальные переменные. Дело в том, что в любом С нумерация элементов начинается с нуля, а Вы пробегаете при чтении значения j=1 ... 10. То есть, присваиваете 10 значений УЖЕ 11-му "ряда" массива!! А где он располагается?
Конечно же за "концом" массива, то там, где Вы определили остальные элементы ... С разрешает выходить за пределы массива в любую сторону
--------- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор) Россия, Саранск Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники WWW:Программирование на Паскале ---- Ответ отправлен: 04.10.2008, 09:11 Оценка за ответ: 5 Комментарий оценки: Получается, что по-идее, я вышел за "границу массива" на один элемент. Тогда почему же обнуляются сразу 2 две? =)
Отвечает: Макс Коваленко Юрьевич
Здравствуйте, LexXx! Индексация массивов НАЧИНЕТСЯ С 0 А не с 1 как в вашем случае. for (j=0;j<n;j++) for (i=0; i<r; i++) попробуйте так. должно помочь.
Ответ отправил: Макс Коваленко Юрьевич (статус: 1-ый класс)
Ответ отправлен: 04.10.2008, 20:24 Оценка за ответ: 4 Комментарий оценки: Спасибо, я понял