|
Платные хостинги
Раскрутка сайта
Книги по программированию
Черти что с массивами в двойном цикле, Переменная цикла вылазит за пределы...
- Вот кусочек процедурыКод ind:=16; for m:=0 to 10 do for n:=m to 13 do begin Param:=W*f[m]*f[n]; new[ind]:=NewSum(Param,Q,old[ind]); U[m,n]:=new[ind];U[n,m]:=new[ind]; inc(ind); end;highlightSyntax('delphiYWIwZT','delphi');Где i,ind,m,n:integer; U:TU; TU=array[0..10,0..13] of Extended; (Тип) W,Param:Extended; f:array [0..13] of Extended; new:array[0..199] of Extended;При ind=92 , n=16390 (!)Если строку U[m,n]:=new[ind];U[n,m]:=new[ind]; убрать, то пашет. А так вылетает с foating point operation. Пробовал эту строчку выносить в отдельный цикл - та же самая фигня. А загнать значения из new в матрицу U мне надо!
- Фишка вот в чем:У тебя U[0..10, 0..13]. m и n изменяются от 0 до 13, а ты пишешь:U[m,n] := new[ind]; U[n,m] := new[ind];Вот когда у тебя что-то больше 10 (n на первом же цикле примет значение 11) вылазит Access violation, а не floating point.
- Тьфу. Как я не заметил... Действительно, мне нужно было отражать матрицу 10*10.
- Интересно, почему в этом варианте тож вылетает с Акцес Виолейшн? Ну и с переменной n та же малина и точно на том же шаге...Код ind:=16; for m:=0 to 10 do for n:=m to 13 do begin new[ind]:=NewSum(W*f[m]*f[n],Q,old[ind]); if n<11 then U[m,n]:=new[ind];U[n,m]:=new[ind]; inc(ind); end;highlightSyntax('delphiDBkZDc','delphi');
- Та же самая ошибка. У тебя If обрабатывает только первое присваивание. Пиши:Код if n<11 then begin U[m,n]:=new[ind]; U[n,m]:=new[ind];end;highlightSyntax('delphijIzY2U','delphi');
- ГыГ.. Лопух, студент, лопух..И микрофон при нем.. при нем..
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|