Форум программистов, компьютерный форум CyberForum.ru

Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Vang Drnkn
0 / 0 / 0
Регистрация: 12.08.2008
Сообщений: 4
12.08.2008, 15:38     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #1
Здраствуйте. Проблема заключается в следующем. Есть следующий цикл:
Код
for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++){
                       while ((n%i||d%i)==0){
                                n/=i;
                                d/=i;
                        }
}
Допустим, n и d равно 18 и 36. Как я понимаю, проверка условия должна выглядеть так:
18%2=0
36%2=0

!((0||0)&&!(0&&0))==0
!(0&&1)==0
1==0

Получаем противоречие, следовательно, цикл должен выполняться, но этого не происходит. Вот с чем это связано? Спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
12.08.2008, 15:53     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #2
погоди, сначала выполняются скобки, потом логическое не, т.е.:
(0||0) = 0 => !0 = 1
(0&&0) = 0 => !0 = 1
(1&&1) = 1 => !1 = 0
следовательно, 0 = 0, цикл завершен...

сорри, не досмотрел, мой баг...
Vang Drnkn
0 / 0 / 0
Регистрация: 12.08.2008
Сообщений: 4
12.08.2008, 16:09  [ТС]     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #3
Извини, я скобки еще забыл поставить, там отрицание не от (0||0), а от (0||0)&&!(0&&0).
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:11     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #4
WooDooMan, там нету еще одного "не"
.
!((0||0)&&!(0&&0))==0
!((0)&&!(0))==0
!(0&&1)==0
!(0)==0
1==0
так ?
или я что упустил ?

Vang Drnkn а вообще есть такой режим, режим отладки называется - поставь брейкпоинт и посмотри как будут меняться переменные...
сможешь всё сам понять...
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
12.08.2008, 16:19     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #5
Цитата Сообщение от Vang Drnkn Посмотреть сообщение
Получаем противоречие, следовательно, цикл должен выполняться, но этого не происходит. Вот с чем это связано? Спасибо.
цикл выполняется,пока условие истинно! у вас ложно вот он и не выполняется.
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:29     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #6
XuTPbIu_MuHTAu
ты про какое из них ?? вроде в for окончание цикла истина
а во втором истина - исполнение цикла

но у него в цикле while (0||0) ==0
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
12.08.2008, 16:33     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #7
Цитата Сообщение от Xentar Посмотреть сообщение
XuTPbIu_MuHTAu
ты про какое из них ?? вроде в for окончание цикла истина
Код
 for ( int i=0;i<10;i++) cout << i;
окончание цикла при i = 10.Не пудрите мне мозги,это не истина
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:40     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #8
Добавлено через 2 минуты 12 секунд
.окончание цикла при i = 10.Не пудрите мне мозги,это не истина
извини - туплю
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
12.08.2008, 16:44     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #9
Я вообще не понимаю,что у него там этим условием сказано
!((n%i||d%i)&&!(n%i&&d%i)) == 0.
то,что в скобках,большое и страшное :
(n%i||d%i)&&!(n%i&&d%i) это A&&!A т.е 0
получаем в целом цикл
for(int i=2; 1==0;i++) ...
И с чего ему вообще запускаться?
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:48     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #10
И с чего ему вообще запускаться?
я думал что цикл пока условие не тру идет...
как WooDooMan написал ))
/whisp у него написано что он знает С++ ))))))
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
12.08.2008, 16:50     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #11
Это полбеды,самое забавное,что условие в скобках от i не зависит. Либо бесконечный цикл,либо вообще его нет.
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:53     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #12
Ну в принципе я тоже так понял что там бесконечный цикл ...
но т.к. там false - то естественно он не выполняется
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
12.08.2008, 17:12     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #13
Xentar , ну ладно уже, ошибся, с кем не бывает...
Xentar
Of Wolf and Man
 Аватар для Xentar
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 17:18     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
)) все ошибаются ))
я тоже ошибался )))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2008, 18:01     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++)
Еще ссылки по теме:

[struct tm] или нестыковка в C89 & C++98 & C++11? C++
C++ Оператор if и логическая операция И (AND) &&
Nested classes && enum declaration C++
C++ Логические операции (Логические &&, ||) (Побитовые &, |)
C++ Ошибка: Cube::Cube(Cube &&)': cannot convert argument 1 from 'int' to 'int *[]'

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vang Drnkn
0 / 0 / 0
Регистрация: 12.08.2008
Сообщений: 4
12.08.2008, 18:01  [ТС]     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) #15
Спасибо) Получается я сам себя обманул.
Yandex
Объявления
12.08.2008, 18:01     Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++)
Ответ Создать тему
Опции темы

Текущее время: 21:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru