2017-06-14 10 views
0

Ich programmiere einen Taschenrechner und wenn ich zum Beispiel die erste Option wähle, stoppt das Programm. Ich kann keine Zahlen eingeben. Was muss ich in meinem Code ändern, damit die Methoden funktionieren? Ich weiß nicht, was ich tun muss.Warum Methoden nicht funktionieren?

main.cpp:

#include "stdafx.h" 
#include <iostream> 
#include "Calculator.h" 

using namespace std; 

float Calculator::add() 
{ 
    cout << "Enter 1 number: "; 
    cin >> a; 
    cout << "Enter 2 number: "; 
    cin >> b; 
    system("cls"); 

    cout << a + b << endl; 

    return 0; 
} 

float Calculator::sub() 
{ 
    cout << "Enter 1 number: "; 
    cin >> a; 
    cout << "Enter 2 number: "; 
    cin >> b; 
    system("cls"); 

    cout << a - b << endl; 

    return 0; 
} 

float Calculator::mul() 
{ 
    cout << "Enter 1 number: "; 
    cin >> a; 
    cout << "Enter 2 number: "; 
    cin >> b; 
    system("cls"); 

    cout << a*b << endl; 

    return 0; 
} 

float Calculator::div() 
{ 
    cout << "Enter 1 number: "; 
    cin >> a; 
    cout << "Enter 2 number: "; 
    cin >> b; 
    system("cls"); 

    cout << a/b << endl; 

    return 0; 
} 

int main() 
{ 
    int choose; 

    Calculator k1; 

    cout << "1.Add\n"; 
    cout << "2.Sub\n"; 
    cout << "3.Mul\n"; 
    cout << "4.Div\n"; 
    cout << "Choose: "; 
    cin >> choose; 

    if (choose == '1') 
     k1.add(); 
    else if (choose == '2') 
     k1.sub(); 
    else if (choose == '3') 
     k1.mul(); 
    else if (choose == '4') 
     k1.div(); 


    system("pause"); 
    return 0; 
} 

Calculator.h:

#pragma once 
#ifndef Calculator_h 
#define Calculator_h 

class Calculator { 
private: 
    float a, b; 
public: 
    float add(); 
    float sub(); 
    float mul(); 
    float div(); 
}; 

#endif 
+3

Ändere 'choice == '1'', um '= 1' zu wählen und ähnlich anderen, dies könnte das Problem sein. –

+1

Sie haben 'int choose' deklariert, aber Sie versuchen es mit einem Zeichen zu vergleichen ('if choose == '1''). Entfernen Sie die Anführungszeichen um die Zahlen, mit denen Sie vergleichen. –

+0

Es funktioniert! Vielen Dank! – abs

Antwort

5

Sie lesen sind als int wählen: int choose; so haben Sie es als eine behandeln:

if (choose == 1) 
    k1.add(); 
else if (choose == 2) 
    k1.sub(); 
else if (choose == 3) 
    k1.mul(); 
else if (choose == 4) 
    k1.div(); 

Erklärung wie gefordert:

if (choose == '1') 

Dies ist syntaktisch nicht falsch sprechen, weil einfach C++ casting implicitly ist das Zeichen ‚1‘ zu seiner ASCII code, die ein int Wert ist 49.

Sie wurden buchstäblich die folgenden Schritte ausführen: if (choose == 49) statt if (choose == 1)

Verwandte Themen