0

以下は、私が CS 入門クラスのために持っている簡単な宿題です。

#include <iostream>
#include <string>

int main() {
using namespace std;
int num1; int num2; int num3; int ans; 
char oper;
/* 
cout << "Enter an arithmetic expression:" << endl;
cin >> oper >> num1 >> num2 >> num3;
DEBUGGING
*/

cout << "enter an operator" << endl;
cin >> oper; /* Segmentation error occurs here... */
cout << "enter number 1" << endl;
cin >> num1; 
cout << "enter number 2" << endl;
cin >> num2;
cout << "enter number 3" << endl;
cin >> num3;
cout << "okay" << endl;

if (oper = "+") {
    if (num1 + num2 != num3) {
        cout << "These numbers don't add up!" << endl;
    }
    else {
        ans = num1 + num2;
        cout << num1 << "+" << num2 << "==" << ans << endl;
    }
}
else if (oper = "-") {}
else if (oper = "*") {}
else if (oper = "/") {}
else if (oper = "%") {}
else {
    cout << "You're an idiot. This operator clearly does not exist... Try again " << endl;
}

return 0;
}

私はセグメンテーション フォールトにあまり詳しくないので、何か間違ったことをしている場合に誰かが説明できれば、それは素晴らしいことです。

4

4 に答える 4

1

あなたのコードは gcc 4.1.2 ではコンパイルできません。どのコンパイラを使用していますか? また、「if (oper = '+')」は正しくないように見えます。そこの変数 oper に '+' を代入しますか?

于 2012-09-10T17:56:51.637 に答える
0

コードにエラーが見つかりませんでした。VC++.

#include <iostream>
#include <string>
int main() {
    using namespace std;
    int num1; int num2; int num3=0; int ans; 
    char oper;



    cout << "Enter an arithmetic expression: ( [/ 4 2]  or [+ 1 1] or [- 5 4] )" << endl;
    cin >> oper >> num1 >> num2;

    switch (oper)
    {
        case '+':
                ans=num1+num2 ;
            break;

        case '-':
                ans=num1-num2 ;
            break;

        case '*':
                ans=num1*num2 ;
            break;

        case '/':
                ans=num1/num2 ;
            break;



    }

    cout << "\nans= " << ans<<"\n\n";


    return 0;

}
于 2012-09-10T16:56:58.340 に答える
-1

以下を変更します。

if (oper == '+')

else if (oper == '-') {}
else if (oper == '*') {}
else if (oper == '/') {}
else if (oper == '%') {}

文字には「 」を使用し、ブール論理には == を使用してください。

于 2012-09-10T18:02:16.193 に答える
-2

cinに複数の文字を入れようとします。入れるすべての文字(改行文字を含む)operを保持するために char のベクトルが必要です。cin

この場合、それを使用char oper[10]して、しようとしている 1 文字の入力を処理できます。

ただし、 std::getline(); を使用することをお勧めします。( http://www.cplusplus.com/reference/string/getline/ )

于 2012-09-10T16:55:14.923 に答える