2017-07-26 1 views
1
using namespace std; 
#include <iostream> 
int GCD(int a, int b){ 
    while(b!=0){ 
     int temp=b; 
     b=a%b; 
     a=temp; 
    } 
    return a; 
} 
int main(){ 
    int a=0, b=0; 
    cout<<"Please enter two integers to find their GCD using the Euclidean algorithm."; 
    cin>>a>>b; 
    cout<<"The greatest common divisor of "<<a<<" and "<<b<<" is "<<GCD(a,b)<<"."; 
} 

Ceci est un simple programme C++ qui trouve le plus grand commun diviseur de deux nombres, et il fonctionne très bien. Cependant, si je changeErreur Odd APPCRASH dans le programme GCD?

int GCD(int a, int b){ 
    while(b!=0){ 

dans while(a!=0){, je fais l'expérience d'une erreur APPCRASH, code d'exception c0000094 qui tue ma course. J'exécute les normes ISO C++ 11 et mon IDE est Code :: Blocks 16.

+0

* Je rencontre une erreur APPCRASH. * Avec quelles entrées? Peut-être quand 'b = 0'? –

+0

@MichaelWalz Et si 'b = 0'? –

+0

@GauravSehgal Désolé de ne pas avoir clarifié, j'ai utilisé 100 et 150, 150 et 150, ainsi que 150 et 100. C'était une tâche simple pour un cours d'entrée de gamme en C++, donc je ne tenais pas compte des exceptions : P) –

Répondre

0

Vous avez simplement une erreur "division par 0".

Démonstration:

#include <iostream> 

using namespace std; 

int GCD(int a, int b) { 
    while (a != 0) { 
    int temp = b; 

    if (b == 0) 
    { 
     cout << "Divison by 0\n"; 
     return 0; 
    } 

    b = a % b; 
    a = temp; 
    } 
    return a; 
} 

int main() { 
    int a = 0, b = 0; 
    cout << "Please enter two integers to find their GCD using the Euclidean algorithm."; 
    cin >> a >> b; 
    cout << "The greatest common divisor of " << a << " and " << b << " is " << GCD(a, b) << "."; 
} 

Entrée:

5 
5 

Responsabilité: ce programme démontre seulement qu'il ya une erreur "division par 0", il est toujours pas correct.