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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 09:24   #51
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Цитата:
найти его невозможно
Это лишь в нашей системе счисления невозможно, таких чисел то много, например:

Задачка со стороной квадрата корень из 2 (надеюсь все в школе проходили? ), в нашей системе счисления, нет такого числа что б точно выразить размер этой стороны, он стремится к бесконечности, но сторона то есть и она не стремится к бесконечности, вывод число точно описывающие эту сторону существует (и это не двойка под радикалом) но с нашей математикой его найти невозможно, с ним лишь можно проводить операции, на мой взгляд то же самое с результатом деления на нуль, обозначил его какой нибудь буквой (как раз как обозначена двойка под радикалом) и выполняй себе операции...

Update

Конкретно по вопросу, а вот и решение, можно и систему новую придумать!

PS
Цитата:
ЧСВ
Мб ЧВС - чрезвычайно высокая самооценка? или расшифруйте аббревиатуру...
В планах порабощение вселенной...

Последний раз редактировалось zumm; 21.12.2010 в 09:28.
zumm вне форума Ответить с цитированием
Старый 21.12.2010, 09:28   #52
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
чтобы работать с множествами придется писать еще один модуль
Не придется. Если у вас 1/0 = 999...999, то все, трындец. Это просто большое число, и ничем оно не отличается от остальных. Его не возможно выделить из толпы, а следовательно для работы с ним нужен только ваш модуль.
Sibedir вне форума Ответить с цитированием
Старый 21.12.2010, 09:39   #53
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

ЧСВ - чувство собственной важности .

Цитата:
Это просто большое число, и ничем оно не отличается от остальных. Его не возможно выделить из толпы, а следовательно для работы с ним нужен только ваш модуль.
Ну тогда все ОК.
Есть две операции деления:
DivBigNumE - вызовет Д'Эльфийское исключение DivideByZero.
DivBigNumR - вернет километровое число из 9-к.
Пусть каждый юзает что ему больше нравится (есть же операция / и операция div, по-моему очень деж справедливо). Конечно если числа будут очень большими, то это не приятно (но можно исправить и ставить на порядок больше разрядов, чем в числе, которое делят на нуль), для малых же величин вполне себе сойдет...

Цитата:
ни в физике это делать нельзя
Верно, но здесь подмена понятий - числа это абстракции, в физике же величины реальные, та же температура строго говоря, ее величина напрямую зависит от точки отсчета (Кельвин, Цельсий)... Не все так просто, вот и школьникам объясняют как можно поделить нуль яблок на нуль человек? Но ведь конкретные величины это не числа, а большая разница...

Цитата:
Если у реки стоит табличка "Брода нет" - это не значит, что я не могу туда идти. Это значит, что кто-то тщательно искал и не нашел, и, если я пойду, вероятность утануть ~ 99.999%. Прежде чем говорить, что брод есть, его надо сперва найти.
Это уже философия .
Я даю Вам два русла одной реки - в одной нет брода, во второй брод есть, но надо сильно поискать его (так как река сильно глубокая).
В первом случае (с исключением) вы реку перейти не сможете, во втором вы утоните. У нас демократия, выбирайте сами . И если следовать философии, то достоверно утонуть при переходе через реку, чем просто невозможность даже совершения самой попытки, так если брода и нет, это не значит, что Вы не можете пытаться реку перейти... Вот к чему приводят размышления о делении яблок на нуль, поэтому делят на нуль числа, а не яблоки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 21.12.2010 в 09:49.
Utkin вне форума Ответить с цитированием
Старый 21.12.2010, 11:10   #54
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

ОК. Да будет так.
Но тогда нужно идти до конца.
Допустим, я точно знаю, что в построеной мной математической моделе не будет деления на 0. Логично использовать DivBigNumR. Тогда зачем мне нужно
Код:
        Count:=2;
        If F=True then
        begin
             i:=1 div (Count-2); // Вылет
             SetLength(Res.Category.Left, i); // До сюда выполнение вообще не дойдет никогда
             Exit; // До сюда тоже
        end
        Else
        begin

            // Выпоним деление
            DivBy0(Res);
            Exit;
        end;
Короче, я бы сделала так: Sib_Длинные числа.zip
Sibedir вне форума Ответить с цитированием
Старый 21.12.2010, 12:35   #55
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не сильно вижу разницу.
Код:
i:=1 div (Count-2); // Вылет
SetLength(Res.Category.Left, i); // До сюда выполнение вообще не дойдет никогда
Вы думаете Дельфи позволит просто взять одно число и поделить на другое?
Конечно можно и исключения напрямую вызвать, но не знаю в чем собственно разница? Поэтому тут все так хитро . Дело в том, что без реального применения результата от деления на нуль, само деление на нуль не произойдет - оптимизация, она повсюду. На самом деле ошибку вызывает сам факт применения результата, а не факт деления, такие дела. Ну да это мелочи жизни...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.12.2010, 13:01   #56
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Вы думаете Дельфи позволит просто взять одно число и поделить на другое?
Да я понял, что 1/0 делфи не даст
Цитата:
Конечно можно и исключения напрямую вызвать, но не знаю в чем собственно разница?
В оптимизации и удобочитаемости кода
Цитата:
Дело в том, что без реального применения результата от деления на нуль, само деление на нуль не произойдет
{$O-} - отключает оптимизацию
Код:
begin
{$O-}
  i := 0;
  i := 1 div i;
{$O+}
end;
Цитата:
На самом деле ошибку вызывает сам факт применения результата, а не факт деления
Это не так. Оптимизатор кода просто убирает "неиспользуемую" строку.

Помоему ты не понял, что я имел в виду. Обрати внимание на то, что я убрал описание DivBig из interface. Теперь его могут вызвать только DivBigNumR и DivBigNumE, которые и реагируют на 0 в знаменателе.
Можно оставить описание DivBig в interface, но тогда я бы ее переименовал в BAD_DivBig, чтоб сразу было ясно - "не знаешь не лезь".

Последний раз редактировалось Sibedir; 21.12.2010 в 13:05.
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление на нуль при запуске Pababop Паскаль, Turbo Pascal, PascalABC.NET 0 12.12.2010 16:43
убрать null (нуль) символы в строке Kib Общие вопросы Delphi 7 25.06.2010 14:22
как поставить ограничение на число нуль а не на символ нуль??? Dr.Swat Помощь студентам 0 12.06.2010 20:35
Делить без остатка rangel PHP 4 30.07.2009 14:31
На 0 делить! abdumanon Microsoft Office Excel 6 07.04.2009 13:18