Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 15:49   #1
Михаил Кузнецов
Новичок
Джуниор
 
Регистрация: 31.10.2010
Сообщений: 2
Печаль Проблема с присвоением

Написал программу где обрабатываю элементы массива, но присвоенные мной значения его элементам через пару строчек кода приобретают другие значения. В чем дело не пойму.

nrht_dr2Reht2[1] = 1; nrht_dr2Reht2[2] = 0; nrht_dr2Reht2[QDRSREHT] = 3;

cout << " " << nrht_dr2Reht2[1] << " " << nrht_dr2Reht2[2] << " " <<
nrht_dr2Reht2[QDRSREHT] << endl;
cascdr_Reht1 = 8;
cout << " " << nrht_dr2Reht2[1] << " " << nrht_dr2Reht2[2] << " " <<
nrht_dr2Reht2[QDRSREHT] << endl;

Результат выводов в консоли:
1 0 3
1 0 8.

Почему вывелось другое значение не пойму. Может что-то с объявлением массивов или что-то с выделением памяти.
Михаил Кузнецов вне форума Ответить с цитированием
Старый 31.10.2010, 16:31   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Мама мия, ну и названия!
Думается, все из-за того, что в C/C++ индексация массивов начинается с нуля, а вы пытаетесь вести индексацию с 1. Поэтому последним элементов вместо N-1 считаете N, т.е. вылезаете за пределы массива. Вот так будет правильно:
Код:
int array[3];
array[0] = 0; array[1] = 1; array[2] = 2;
std::cout << array[0] << array[1] << array[2];
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 31.10.2010, 16:43   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Проблема с присвоением
Проблема с присваиванием
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 31.10.2010, 17:08   #4
Михаил Кузнецов
Новичок
Джуниор
 
Регистрация: 31.10.2010
Сообщений: 2
По умолчанию

Спасибо что откликнулись на мою просьбу. Сложность имен необходима для понимания физического смысла переменной (программа для работы в энергетике).

Ошибку нашел сам.
Вместо
int nrht_dr2Reht2[QDRSREHT]
надо было писать
static int nrht_dr2Reht2[QDRSREHT]

В фортране все было проще ((((
Михаил Кузнецов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись иконок из ехе файлов в imagelist с последующим присвоением картинки компоненту image. xaero93 Помощь студентам 2 13.04.2010 14:45
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37