0
using namespace std;

//a class that will handle all the calculations requested by user

class MathOperations{
  public:
    void Message();
    int setSum(int,int);
    int setSuB(int,int);
    int setMul(int,int);
    float setDiv(float,float *);
    int setSqrt(int);
};

//Implementation:

void MathOperations:: Message(){
    cout<< " Welcome. This program simulates a calculator "<<endl;
}
// implementing the setters methods.
int MathOperations::setSum(int a, int b){

    int total;
    total = a + b;
    return total;
} 
int MathOperations:: setSuB(int a, int b){
    int total;
    total = a - b;
    return total;
}
int MathOperations:: setMul(int a, int b){
    int total;
    total = a * b;
    return total;
}

float MathOperations:: setDiv(float a, float *b){
    float result;
    if(b ==0){
        cout << "Using the Default Value of 1 because you can't devide by 0"<<endl;
    }
    else
        result = (a / *b);
    return result;
}

int MathOperations::setSqrt(int Square){
    int total;
    total = sqrt(Square);
    return total;
}

int main(int argc, const char * argv[])
{
    //creating instances of class MathOperations
    MathOperations add, sub, mul, div, sqrt;
    ///creating variable to hold user input

    int fnum;
    float snum;
    char opt= '0';

    //propt user for values
    cout << " Enter a Number"<<endl;
    cin >> fnum;

    cout << " Enter a second number " <<endl;
    cin >> snum;

    float total = div.setDiv(fnum, &snum);

    cout << total <<endl;


    cout << " What would you like to do '+','-','*','/' ?"<<endl;
    cin >> opt;

    switch (opt) {
      case '+' :
        {
            int total = add.setSum(fnum, snum);
            cout << " The Total Sum of both numbers is " << total <<endl;
        }
        break;
      case '-' :
        {
            int total = sub.setSuB(fnum, snum);
            cout << " The Subtraction of both Numbers is " << total << endl;
        }
        break;
      case '*' :
        {
            int total = mul.setMul(fnum, snum);
            cout << " The Multiplication of both Numbers is " << total << endl;
        }
        break;
      case '/' :
        {
            int total = div.setDiv(fnum, &snum);
            cout << " The Division of both Numbers is " << total <<endl;
        }
      default:
        cout << " Not a valid Option"<<endl;
    }

}

分割がうまく機能していません。ここで何が間違っていますか?内部に数学演算を含むクラスを作成しようとしています。私はここでいくつかの練習をしようとしている初心者です。具体的に何が間違っているのか教えていただけますか?

4

3 に答える 3

0

最初に 2 番目の float を 0 と比較していないため、 setDiv 関数で 0 による除算から身を守っていません。そのアドレスを NULL と比較しているだけです。

そして、エラーメッセージは意味がありません.プログラムは決して「1を使用」しません.

また、ポインターが NULL の場合は、初期化されていない値を返します。

于 2012-07-20T16:30:06.167 に答える
0

0 の代わりに 1 を使用しているという場合、b の値を 1 に変更することはありません。

于 2012-07-20T16:31:01.940 に答える
0

関数 div の 2 番目のパラメーターは、ポインターであってはなりません。少なくとも、それがポインターである理由はわかりません。

したがって、変数 snum から * と & を削除するだけです。

于 2012-07-20T16:24:19.687 に答える