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

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

Войти
Регистрация
Восстановить пароль
 
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
#1

Объясните почему не срабатывает И (&&) - C++

21.03.2013, 18:20. Просмотров 420. Ответов 2
Метки нет (Все метки)

Есть задача нахождения наибольшего общего делителя для двух чисел. Программу я написал.Но почему когда я указывал в цикле И (&&), цикл выполнялся неправильно, а когда указал ИЛИ (||), все заработало. Объясните почему нужно ставить ИЛИ, когда по логике вроде подходит И. Заранее извиняюсь, если мой вопрос глуп
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
using namespace std;
int nod (int, int);
int main()
{
    setlocale(0,"");
    int ch1, ch2;
    cout << "Введите два числа" << endl;
    cin >> ch1 >> ch2;
    cout << "НОД: " << nod (ch1, ch2) << endl;
}
int nod (int chislo1, int chislo2)
{
    int NOD;
    if (chislo1 == 0)
        return chislo1;
    else if (chislo2 == 0)
        return chislo2;
    else if (chislo1 > chislo2)
    {
        NOD = chislo2;
        while (chislo1%NOD != 0 || chislo2%NOD != 0) // почему тут надо ставить ИЛИ вместо И ?
        {
            NOD--;
        }
        return NOD;
    }
 
    else if (chislo1 < chislo2)
    {
        NOD = chislo1;
        while (chislo1%NOD != 0 || chislo2%NOD != 0) // почему тут надо ставить ИЛИ вместо И ?
        {
            NOD--;
        }
        return NOD;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2013, 18:20     Объясните почему не срабатывает И (&&)
Посмотрите здесь:

Почему условие "a && b == 0" не выполняется? - C++
решил вспомнить c++, начал что то писать и непонятка void __fastcall TForm1::Button1Click(TObject *Sender) { int a=0,b=0,s=0; ...

объясните пожалйста что вот это значит: a[1]=COD[input&0x0f]; b[0]=COD[(input>>4)&0x0f];??? - C++
Доброй ночи);) char COD={0b00000000, 0b00001011, 0b00010110, 0b00011101, 0b00100111, 0b00101100, 0b00110001,...

Не работает gettimeofday(&tv1, &tz); - C++
#include &lt;iostream&gt; //#include &lt;сtime&gt; #include &lt;time.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; using namespace std; const...

Оператор if и логическая операция И (AND) && - C++
Вод подскажите что будет быстрей обрабатываться процессором: if(!a&amp;&amp;!b) { a+b; } или

Что это такое **&amp;? - C++
Здравствуйте! как загуглить,

условие if (x && y && z ) - C++
День добрый. подскажите что не так: if(norcub() &amp;&amp; nevk() &amp;&amp; norok()) { cout&lt;&lt;&quot;Условие не выполнено.\n&quot;; count=30; } // эти 3...

Почему оператор & выделывается? - C++
if(pos.x &lt; 120 &amp; pos.x &gt; 20 &amp; pos.y &lt; 120 &amp; pos.y &gt; 20) Пишет ворнинги c:\project\server\project hello\project hello\hai.cpp(18) :...

Undefined reference to 'My_lab2::serialize_child(My_lab2::My_stack&,boost::interpro cess::file_lock&)') - C++
Компилирую test: g++ test.cpp -L. -lwrk -lboost_serialization -o programwrk -std=c++0x Так же компилирую libwrk до компиляции...

Ошибка [Linker error] undefined reference to `Triangulation::distPoints(tagPOINT&, tagPOINT&)' - C++
Добрый день, уважаемые форумчане есть функция которая считает площадь треугольника double Triangulation::squareTriang(POINT &amp;t1, POINT...

С && C++ - это плохо? - C++
Большинство программистов говорят о том что С# и C++ мешать в одном коде не хорошо. Но что в этом такого плохого?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
21.03.2013, 18:32     Объясните почему не срабатывает И (&&) #2
Когда один только делиться на NOD, а второй нет - то получается, что один из них выдает в сравнении истину, а другой ложь - в результате если применить И (&&) то итог- ложь -> цикл завершиться, и мы получаем, что одно из чисел не делиться на NOD, т.е. NOD - не является общим делителем.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2013, 18:59     Объясните почему не срабатывает И (&&) #3
Потому что при &&, проверка на условие в while(), будет всегда выдавать false (второе условие: остаток от целочисленного деления числа на себя, всегда равен 0).
Ответ Создать тему
Опции темы

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