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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Vang Drnkn
0 / 0 / 0
Регистрация: 12.08.2008
Сообщений: 4
#1

Проверка условия окончания цикла for - C++

12.08.2008, 15:38. Просмотров 2223. Ответов 14
Метки нет (Все метки)

Здраствуйте. Проблема заключается в следующем. Есть следующий цикл:
C++
1
2
3
4
5
6
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

Получаем противоречие, следовательно, цикл должен выполняться, но этого не происходит. Вот с чем это связано? Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2008, 15:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка условия окончания цикла for (C++):

Значение переменной после окончания цикла - C++
Чему будет равно i после окончания цикла: for (i=30;i>=10;i--); тело цикла; знаю, вопрос глупый

Запомнить самую длинную строку и выдать её после окончания работы цикла ввода - C++
2. На вход символьного фильтра подаются строки. Фильтр запоминает самую длинную строку и выдает её после окончания работы цикла ввода.

Оптимизация условия цикла while - C++
Доброго времени суток, друзья! Я еще совсем новичок в С++. Подскажите плз как оптимизировать следующее условие выхода из цикла while. Уж...

Условия цикла в функции - C++
int reverse_number(int number) { int n = 0; while(number) { n = 10*n + number%10; number /= 10; ...

Условия остановки цикла - C++
А как задать условие для: 1) Допустим идет цикл вычислений. Необходимо прервать вычисления при условии, что 3 последних вычислений будут...

Условия цикла for, числа double - C++
День добрый. Решал недавно задачку с одного сайта, задачка простая была, но после решения и подглядывания решения от авторов наткнулся на...

14
Lord_Voodoo
Супер-модератор
8590 / 2205 / 61
Регистрация: 07.03.2007
Сообщений: 10,960
Завершенные тесты: 1
12.08.2008, 15:53 #2
погоди, сначала выполняются скобки, потом логическое не, т.е.:
(0||0) = 0 => !0 = 1
(0&&0) = 0 => !0 = 1
(1&&1) = 1 => !1 = 0
следовательно, 0 = 0, цикл завершен...

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

Vang Drnkn а вообще есть такой режим, режим отладки называется - поставь брейкпоинт и посмотри как будут меняться переменные...
сможешь всё сам понять...
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 16:19 #5
Цитата Сообщение от Vang Drnkn Посмотреть сообщение
Получаем противоречие, следовательно, цикл должен выполняться, но этого не происходит. Вот с чем это связано? Спасибо.
цикл выполняется,пока условие истинно! у вас ложно вот он и не выполняется.
0
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:29 #6
XuTPbIu_MuHTAu
ты про какое из них ?? вроде в for окончание цикла истина
а во втором истина - исполнение цикла

но у него в цикле while (0||0) ==0
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 16:33 #7
Цитата Сообщение от Xentar Посмотреть сообщение
XuTPbIu_MuHTAu
ты про какое из них ?? вроде в for окончание цикла истина
Код
 for ( int i=0;i<10;i++) cout << i;
окончание цикла при i = 10.Не пудрите мне мозги,это не истина
0
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:40 #8
Добавлено через 2 минуты 12 секунд
.окончание цикла при i = 10.Не пудрите мне мозги,это не истина
извини - туплю
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 16:44 #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++) ...
И с чего ему вообще запускаться?
0
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:48 #10
И с чего ему вообще запускаться?
я думал что цикл пока условие не тру идет...
как WooDooMan написал ))
/whisp у него написано что он знает С++ ))))))
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 16:50 #11
Это полбеды,самое забавное,что условие в скобках от i не зависит. Либо бесконечный цикл,либо вообще его нет.
0
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 16:53 #12
Ну в принципе я тоже так понял что там бесконечный цикл ...
но т.к. там false - то естественно он не выполняется
0
Lord_Voodoo
Супер-модератор
8590 / 2205 / 61
Регистрация: 07.03.2007
Сообщений: 10,960
Завершенные тесты: 1
12.08.2008, 17:12 #13
Xentar , ну ладно уже, ошибся, с кем не бывает...
0
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
12.08.2008, 17:18 #14
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
)) все ошибаются ))
я тоже ошибался )))
0
Vang Drnkn
0 / 0 / 0
Регистрация: 12.08.2008
Сообщений: 4
12.08.2008, 18:01  [ТС] #15
Спасибо) Получается я сам себя обманул.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2008, 18:01
Привет! Вот еще темы с ответами:

При выполнении условия не выходит из цикла - C++
При выполнении условия не выходит из цикла а продолжается и выходит за границы #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Как задать два условия для цикла - C++
т.е. мне нужно чтобы программа отобрала слова которые имеют 3 буквы и 2 гласных к примеру

Повторение цикла при наступлении определенного условия - C++
Добрый день! Я пишу игру и пытаюсь сделать разыгровку первого хода. Загвоздка в следующем: мне нужно, чтобы при условии &quot;ничья&quot; цикл...

Проверка условия - C++
Народ подскажите пожалуйста, как мне выполнить проверку в if? void country(TEda * Start){ TEda * wp; wp=Start; ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
12.08.2008, 18:01
Ответ Создать тему
Опции темы

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