Недопустимая инструкция в цикле while c ++ - PullRequest
0 голосов
/ 05 октября 2018

Мне поручили написать программу, которая упрощает рациональное число.Я хочу вычислить gcd, а затем разделить числа на gcd.Но программа возвращает очень странную ошибку.

Код:

void read_rational(int& num, int& den) {
    char bar;
    if (cin >> num >> bar >> den) {
        cout << "hi";
        int a = num;
        int b = den;
        while (b != 0) {
            int r = a%b;
            a = b;
            b = r;
        }
        num /= b;
        den /= b;
    }
}

INPUT: 10/2  OUTPUT: Illegal instruction (core dumped)
INPUT: 90/8  OUTPUT: Illegal instruction (core dumped)

Я попытался закомментировать некоторые фрагменты скрипта.Кажется, что программа дает сбой только при наличии цикла while.Но я не вижу, что с ним не так.

1 Ответ

0 голосов
/ 05 октября 2018

Действительно, проблема заключается в цикле while.После завершения b фактически равно 0, поэтому деление после вызывает эти ошибки.Я думаю, что вы хотите a вместо b.

...