Автор
|
Тема: Почему массивы ведут себя странно???
|
dodger |
опубликован 23-12-2001 21:12 MSK
Я пишу прогу, которая вычисляет потенциал поля по уравнению Лапласа. Вот кусок, который собственно и должен вычислять все эти потенциалы:float h = 0; h = (InputArray[0][m_cols] - InputArray[0][0])/m_cols; int i,j; for(i=0;i<m_rows;i++) { for(j=0;j<m_cols;j++) { if(InputArray[i][j] == 0) { float Output = ((InputArray[i+1][j]+InputArray[i][j+1]+InputArray[i-1][j]+InputArray[i][j-1])/4)+(h*(InputArray[i][j+1]-InputArray[i][j-1])/(8*(InputArray[i][j]-InputArray[i-1][j-1]))); InputArray[i][j] = Output; InsertListItem( i,j, NumToStr( Output, 0 ) ); } } } Когда я нажимаю кнопку для расчета вылетает ошибка...Почему не знаю, и в h заносится не то, что нужно, а какое-то левое число. Помогите справится с массивами. Массивы задаются по стилю STL. InputArray[i][j] - исходный массив.
|
ViSko
|
опубликован 24-12-2001 00:44 MSK
Из изложенной информации трудно что-то понять, уточните? Что за ошибка? А то слишком долго копаться.
|
Flex Ferrum
|
опубликован 24-12-2001 10:43 MSK
У тебя пробоема в конструкциях наподобие InputArray[i+1][j]. По достижению i или j значений m_rows и m_cols, соответсвенно, будет сдлана попытка обратиться к несуществующему элементу массва, находящемуся за его пределами. Результат этой операции, как известно, непредсказуем. |