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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2013, 22:19   #1
LLIALLIJIbIK
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 51
По умолчанию Деление на ноль

Подскажите, почему возникает ошибка "floating point division by zero"

for i:=5 to 10000 do
begin
ff1:=2*pi*Frequency[i]*Mei;
ff2:=(power(fp,3)*Me)/Frequency[i];
Frequency[i]:=i+0.001;
ff11:=2*pi*Frequency[i]*Mei;
ff22:=(power(fp,3)*Me)/Frequency[i];
if abs(ff11-ff1)=abs(ff22-ff2) then begin
FF:=Frequency[i];
break;
end;
end;
LLIALLIJIbIK вне форума Ответить с цитированием
Старый 13.04.2013, 22:23   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Код:
ff2:=(power(fp,3)*Me)/Frequency[i];
Если тот код, что вы представили - полная программа, то из-за этой строки. У вас массив не определён, компилятор, наверное, считает, что там содержатся одни нули.
Вадим Мошев вне форума Ответить с цитированием
Старый 13.04.2013, 22:26   #3
LLIALLIJIbIK
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 51
По умолчанию

Определен.
Frequency:array[5..10000] of double;
Поэтому мне и не понятно откуда там ноль.
LLIALLIJIbIK вне форума Ответить с цитированием
Старый 13.04.2013, 23:01   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Он объявлен, но не инициализирован значениями.
(скорее всего он заполнен нулями, как глобальная переменная)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 13.04.2013, 23:12   #5
LLIALLIJIbIK
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 51
По умолчанию

А как мне его инициализировать с таким огромным диапазоном?
LLIALLIJIbIK вне форума Ответить с цитированием
Старый 13.04.2013, 23:15   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Fillchar(Frequency,Length(Frequency )*sizeof(double),1);
А вообще не понятно что ты добиваешся этим кодом...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2013, 23:17   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от LLIALLIJIbIK Посмотреть сообщение
А как мне его инициализировать с таким огромным диапазоном?


Можно вручную:
Код:
Frequency[1]:=random(10)+1;
Frequency[2]:=random(10)+1;
Frequency[3]:=random(10)+1;
...
А можно с помощью цикла
Код:
for i:=1 to 10000 do 
Frequency[i]:=random(10)+1;
Рекомендую воспользоваться первым способом, чтобы поняли, насколько полезны циклы и чтобы вопросов "А как мне его инициализировать с таким огромным диапазоном?" у вас больше не возникало
Вадим Мошев вне форума Ответить с цитированием
Старый 13.04.2013, 23:26   #8
LLIALLIJIbIK
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 51
По умолчанию

Пытаюсь найти частоту, на которой пересекаются две кривые в диапазоне частот.

Я сделал так, заработало, но некорректно
Код:
for i:=5 to 10000 do
begin
Frequency[i]:=i+0.001;
end;
Блин, и понял, что это фигня полная

Последний раз редактировалось Stilet; 14.04.2013 в 10:08.
LLIALLIJIbIK вне форума Ответить с цитированием
Старый 13.04.2013, 23:54   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

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

Цитата:
Сообщение от LLIALLIJIbIK Посмотреть сообщение
Пытаюсь найти частоту, на которой пересекаются две кривые в диапазоне частот.
Что-то никак не могу увязать эту цель с Вашим кодом.
Вы не могли бы поподробнее изложить, что именно Вам нужно.

Последний раз редактировалось s-andriano; 13.04.2013 в 23:58.
s-andriano вне форума Ответить с цитированием
Старый 14.04.2013, 00:21   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
превышает количество атомов во Вселенной.
Если предположить, вселенная бесконечна, то количество атомов в ней равно бесконечности. Отсюда следует, что способов инициализации массива также бесконечно много.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление на ноль происходит без ошибок Dim4 Общие вопросы Delphi 9 28.05.2012 23:22
Деление на ноль и запрет ввода букв sunnyws Microsoft Office Word 2 10.06.2011 14:20
Деление на ноль Bearw08 Свободное общение 26 18.03.2009 18:39
Деление на ноль! Hacker19_90 Паскаль, Turbo Pascal, PascalABC.NET 7 01.10.2008 22:59