Отладчик и Интегрированный терминал дают различный вывод для кода C ++ - PullRequest
0 голосов
/ 02 апреля 2020

Вывод следующего кода отличается, когда используется мой встроенный терминал и когда используется онлайн-редактор (GeeksForGeeks). Он отлично работает на моей IDE (Vscode, MingGW64 g ++ (8.1.0)). Например: для t = 1, x = 12 и p = 2 выходные данные, заданные моей IDE, равны 0 (правильно), тогда как онлайн-редактор выдает 1 (неправильно). Онлайн-редактор использует g ++ (5.4). Как это, что компиляторы так сильно различаются здесь? Что я должен сделать по-другому, чтобы решить эту проблему?

#include <iostream>
#include <cmath>
using namespace std;

void express(int x, int p, int &n_root, int &c, int curr_num)
{
    int power;

    for(int i = curr_num + 1; i <= n_root; ++i)
    {   
        power = pow(i, p);
        if(power < x) express(x - power, p, n_root, c, i);
        else break;
    }

    if(x == power) ++c;

    return;
}

int main()
{
    /*ios_base::sync_with_stdio(false);
    cin.tie(NULL);*/

    int t, i;

    cin >> t;

    for(i = 0; i < t; ++i)
    {
        int x, p, c, n_root;
        cin >> x >> p;
        c = 0;
        n_root = (int)pow(x, 1.0/p);
        express(x, p, n_root, c, 0);

        cout << c << endl;
    }

    return 0;
}
...