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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Непонятная ошибка((, Может кто поможет ее найти? 
:(
    Опции темы
Алина
Дата 17.5.2005, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

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



В программе возникает ошибка
"... raised exception type class EAccessViolation..."
в строке, помеченной стрелочками...
Код

SetLength(mu, num_of_x, Km);
........
procedure step3;
var  i, j, k, l: integer;
     sum: double;
begin
  inc(iter);
  SetLength(d,num_of_x, Km);
  for i:=0 to num_of_x-1 do
    for j:=0 to Km-1 do
      d[i][j]:=0;
  for i:=0 to num_of_x-1 do
    for j:=0 to Km-1 do
      begin
        d[i][j]:=0;
        for l:=0 to razmernost-1 do
          d[i][j]:=d[i][j]+(x[i][l]-v[j][l])*(x[i][l]-v[j][l]);
        d[i][j]:=sqrt(d[i][j]);
      end;
  for i:=0 to num_of_x-1 do
    for j:=0 to Km-1 do
      if d[i][j]=0 then
        begin
          mu[i][j]:=1;
          for l:=0 to Km-1 do
            if l<>j then mu[i][l]:=0;
        end;
  for i:=0 to num_of_x-1 do
    begin
      l:=0;
--> while (d[i][l]<>0) and (l<Km) do inc(l);      <---
      if l=Km then
         for k:=0 to Km-1 do
            begin
              sum:=0;
              for j:=0 to Km-1 do
                sum:=sum+1/d[i][j];
              mu[i][k]:=1/(d[i][k]*d[i][k]*sum);
            end;
    end;
  step4;
end;


Ну на что он жалуется, если размерности массивов правильные???
PM MAIL   Вверх
Dynamic
Дата 17.5.2005, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не вникал в алгоритм, но попробуй в:
Код

while (d[i][l]<>0) and (l<Km) do inc(l);
поменять местами условия:
Код

while (l<Km) and (d[i][l]<>0) do inc(l);



--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Joes
Дата 17.5.2005, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

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



хм... у меня возникала из-за конструктора калсса, который я создавал...
но у тебя классов здесь не видно smile
попробуй взять в скобки условие:
Код

while ((l<Km) and (d[i][l]<>0)) do inc(l);

А что за прога может скажешь... будет легче разобраться...
PM MAIL   Вверх
Yanis
Дата 17.5.2005, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



За границы массива выходишь скорее всего.
Добавлено @ 07:53
Воспользуйся отладчиком и ещё F5, F7, F9, Ctrl+F5, так проще поймать ошибку будет.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Алина
Дата 17.5.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

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



Есть набор векторов x[i],i=0..num_of_x-1, x[i] - вектор размерности razmernost, их надо разбить на Km кластеров с центрами v[k] - они тоже в свою очередь векторы длинной razmernost.
Определена матрица расстояний между центрами и элементами d[i][k]=||x[i]-v[k]|| и матрица принадлежности векторов кластерам mu[i][k]:=1/(d[i][k]*d[i][k]*sum(d[i][j]^2, j=0..Km);
0<=mu[i][j]<=1, если mu[i][j]=0 - вектор i кластеру j точно не принадлежит, если mu[i][j]=alfa, то вектор i принадлежит кластеру j с вероятностью alfa.
Если (для некоторого k d[i][k]=0){mu[i][k]:=1, для всех j<>k mu[i][j]:=0;}

мда.... кжись несколько сумбурно...

Поменять местами условия не помогло...
Добавлено @ 08:09
За границы массивов я не выхожу... Я за этим вроде бы довольно четко следила...
PM MAIL   Вверх
Yanis
Дата 17.5.2005, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
За границы массивов я не выхожу... Я за этим вроде бы довольно четко следила...

Просто в этой срочке ничего другого не может быть, кроме выхода за границы.
Код

while (d[i][l]<>0) and (l<Km) do inc(l);



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Dynamic
Дата 17.5.2005, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как d объявлен?


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Алина
Дата 17.5.2005, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

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



d: array of array of double;
PM MAIL   Вверх
Dynamic
Дата 17.5.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В этой строке не должно быть ошибки. Ну, проверь так:
вместо
Код

l:=0;
while (d[i][l]<>0) and (l<Km) do inc(l);
напиши простой цикл
Код

for l := 0 to Km-1 do
 if d[i][l] <> 0 then break;
...................



--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Алина
Дата 17.5.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

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



Я так исправила, и оно теперь не ругается... Фиг знает че это с ним было... Вроде бы и ниче же не поменялось?!

Спасибо за подсказки!
PM MAIL   Вверх
Dynamic
Дата 17.5.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Посмотри еще опцию Project|Options|Compiler|Syntax Options|Complete boolean eval - установлена или нет??


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
SoWa
Дата 17.5.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



И на будущее- используй БрейкПоинты(Точки останова). Прогоняй по ним программу и ищи ошибку там, где точка останова даст ошибку. smile


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Алина
Дата 18.5.2005, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

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



Это был тот случай, когда ни отладчик, ни бейк-пойнты не помогали))
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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