Почему не работает программа?

204
02 ноября 2017, 07:29

Почему не работает программа? после выполнения операции "do...while" программа прекращает свою работу..

#include <cmath>
#include <stdio.h>
#include <iostream>
using namespace std;
int main () {
    int a, b, gcd;
    do {
        cout<<"enter number a and b (so that a anb b is not 0):"<<endl;
        cin>>a>>b;
    } while (a == 0 && b == 0);
    do {
        if (a > b) {
            a = a % b;
        } else if (b > a) {
            b = b % a;
        }
    } while (a != 0 || b != 0);
    cout<<"greatest common divisor of the given numbers = "<<a+b<<endl;
}
Answer 1

Представим, что после очередной итерации a таки 0, а b ну, скажем, 10.

a != 0 || b != 0

совершенно истинно - b не равно 0, так что выходим на следующую итерацию и начинаем делить на 0...

Тут вам нужно

a != 0 && b != 0

А вот в первом цикле как раз нужно

a == 0 || b == 0

чтобы не принимало даже одного нуля, а не оба :)

READ ALSO
typedef и пользовательский тип [дубликат]

typedef и пользовательский тип [дубликат]

На данный вопрос уже ответили:

261
Количество компонент связности

Количество компонент связности

Данный код считает максимальную компоненту связностиКак найти их количество? Например,

311
Вызов operator[] через operator[] const

Вызов operator[] через operator[] const

Почему лучше вызывать константный operator[] из не константного operator[] а не наоборотЯ не вижу разницы между этими двумя способами

349