Почему выходные данные веб-сайта, отправляющего домашние задания, отличаются от Visual Studio? - PullRequest
0 голосов
/ 27 октября 2019

Итак, я создал программу, чтобы найти наибольший общий делитель из пяти чисел.

И вывод, когда я использовал Visual Studio, просто прекрасен, но вывод в онлайн-системе становится сумасшедшим.

Подобно тому, как положить в программу 12, 24, 8, 36, 100, вывод будет 32758.

Кто-нибудь может мне ответить?

#include<iostream>
using namespace std;
const int LEN = 5;
int x = 0;

// TODO 1: Complete the function declaration of GCD(), takes 2 interger as parameter.
int GCD(int n1, int n2) {
    for (int i = 1; i <= n1 && i <= n2; i++) {
        if (n1 % i == 0 && n2 % i == 0) {
            x = i;
        }
    }
    return x;
}

// TODO 2: Complete the function implementation, return the GCD of 2 given number 
int main() {
    int Num[LEN];
    int answer;
    int gcd[4], y, z;
    cout << "Enter " << LEN << " numbers:" << endl;
    for (int i = 0; i < LEN; i++)
        cin >> Num[i];
    cout << "GCD:" << endl;
    for (int i = 1; i < LEN; i++) {
        gcd[i - 1] = GCD(Num[i - 1], Num[i]);
    }
    for (z = 3; z >= 0; z--) {
        if (gcd[z] < gcd[z - 1]) {
            y = gcd[z];
            gcd[z] = gcd[z - 1];
            gcd[z - 1] = y;
        }
    }
    answer = gcd[0];
    cout << answer << endl;
    return 0;
}

Вывод в онлайн-систему

1 Ответ

0 голосов
/ 27 октября 2019

Вы должны вычислять gcd следующим образом, а не для каждых двух последовательных чисел.

answer = Num[0];
for (int i = 1; i < LEN; i++)
    answer = GCD(answer, Num[i]);
cout << answer << endl;
...