Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Черти что с массивами в двойном цикле, Переменная цикла вылазит за пределы... 
:(
    Опции темы
TheAviator
Дата 29.11.2003, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Вот кусочек процедуры

Код
 
  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;


Где 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 мне надо!
PM MAIL WWW ICQ   Вверх
Cheba
Дата 29.11.2003, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Фишка вот в чем:
У тебя 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.
PM MAIL ICQ   Вверх
TheAviator
Дата 29.11.2003, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Тьфу. Как я не заметил... Действительно, мне нужно было отражать матрицу 10*10.
PM MAIL WWW ICQ   Вверх
TheAviator
Дата 29.11.2003, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Интересно, почему в этом варианте тож вылетает с Акцес Виолейшн? Ну и с переменной 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;

PM MAIL WWW ICQ   Вверх
markowww
Дата 29.11.2003, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 27.2.2003
Где: В Вологде-где

Репутация: нет
Всего: нет



Та же самая ошибка. У тебя If обрабатывает только первое присваивание. Пиши:
Код

if n<11 then begin
  U[m,n]:=new[ind];
  U[n,m]:=new[ind];
end;

PM MAIL   Вверх
TheAviator
Дата 29.11.2003, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



ГыГ.. Лопух, студент, лопух..
И микрофон при нем.. при нем.. smile.gif
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.