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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2017, 22:53   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Ошибка примера

генерирую такой пример a/(b-c)-d, но выпадает ошибка "division by zero" , в строке f:=b-c генерируются два одинаковых числа , например 7 и 7 в итоге 7-7 =0, но почему? Если в условии стоит (b>c)

Код:
 repeat 
 a:=RandomRange(1,10);
 b:=RandomRange(1,10);
 c:=RandomRange(1,10);
 d:=RandomRange(1,10);
 f:=b-c;
g:=a div f;
 until (b>c) and  (a mod f=0)and (a>f) and  (g>d);
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 16.01.2017, 23:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. repeat всегда как минимум один раз отрабатывает до проверки условия
2. выход из цикла по True в условии цикла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2017, 23:09   #3
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Я так пробовал, тоже самое
Код:
if b <= c then
    Continue;
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 16.01.2017, 23:11   #4
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
выход из цикла по True в условии цикла
Не понял
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 17.01.2017, 00:02   #5
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Михаил Юрьевич Посмотреть сообщение
Не понял
А чего непонятного-то?
У вас сначала производится деление и только потом проверка.
Цикл неверно построен...
kropotkina-alice вне форума Ответить с цитированием
Старый 17.01.2017, 01:28   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Михаил Юрьевич Посмотреть сообщение
Не понял
Три часа вам объясняли на другом форуме проблему с проверкой условия и всё впустую. Решили напрячь ещё и соседей
northener вне форума Ответить с цитированием
Старый 17.01.2017, 11:54   #7
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Три часа вам объясняли
четыре. Значит так обьясняли, я в своей работе людям по три дня обьясняю, а они не понимают, доходчиво надо обьяснять я не програмист и моя работа с програмированием не связана, это хобби.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 17.01.2017, 11:59   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Другими словами, но то же самое, что и в #2:

1. Выполняются команды после repeat до until
2. Проверяется логическое выражение в until. Если оно ложно, то переход на 1, иначе на следующую команду после until

Если и это не понятно, то лучше не мучаться и бросить это любительское программирование ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2017, 12:04   #9
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Но вот делал так, но тогда комбинаций у b-c становиться меньше
Код:
repeat 
 b:=RandomRange(1,10);
 c:=RandomRange(1,10);
 f:=b-c;
 until (b>c) 
 
 
 repeat 
 a:=RandomRange(1,10);
 d:=RandomRange(1,10);
 
g:=a div f;
 until  (a mod f=0)and (a>f) and  (g>d);
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 17.01.2017, 12:05   #10
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если и это не понятно, то лучше не мучаться и бросить это любительское программирование ))
Я тоже так говорю людям, прикратите сами ремонтировать машины, а они все равно в движки лезут
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3 примера (BASIC,C++) Olafson Помощь студентам 7 26.04.2012 19:19
2 примера по языку Си Gargona Помощь студентам 11 10.11.2011 10:14
Решение примера в Делфи7 Маша1993 Помощь студентам 6 08.10.2011 21:57
Ошибка при компилировании примера из книги zipwind Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 06.06.2011 21:42
Memo и решение примера rabbitsnew Общие вопросы Delphi 2 16.10.2010 14:58