我的基本计算器出了什么问题?

时间:2016-11-26 03:24:14

标签: c++ int return codeblocks cin

Noob在这里:)嗨。试图自学c ++!

下面的代码应该问我:我想做什么样的操作,变量:`int f;'

我知道问题来自res = a f b;,我非常确定这是一个非常糟糕的错误代码..我不确定该怎么办?

任何想法?

#include <iostream>

using namespace std;

int main()
{
int a;
int b;
int sum;
int f;

cout << "wahts the first number" << endl;
cin >> a;
cout << " '+'? '-'? '*'? or '/'? " << endl;
cin >> f;
cout << "whats the second number" << endl;
cin >> b;
res = a f b;
cout << "answer is:  " << res << endl;
return 0;
}

2 个答案:

答案 0 :(得分:0)

您需要考虑一些事项。

  1. 您的f是一项操作,如果您想进行通用操作,则应该类似于std::function而不是intint包含一种数字。
  2. 在这种情况下,您实际上并不需要使用std::function,因为您可以执行一系列不同的操作(乘法,加法,减法,除法)。您无法将其分配给f并希望它能够正常运行。您需要conditional statements来决定从输入中执行的操作。您还应该处理不是其中一个选项的输入。你想把这个逻辑中的一部分放到一个不同的函数中,以使一切变得美好和有条理。
  3. res = a f b无法上班,因为您从未定义过resa f b不是有效代码。您已定义sum而未使用它,因此您可能意味着res。像a f b这样的表达式不起作用,除非中间是特殊的(operator,事实上,只有某个运算符子集会形成这样的表达式。)
  4. 与您的错误无关,但主块内的代码应缩进一点以便于阅读。
  5. 也与错误无关,但我会针对using namespace std提出建议,因为它会污染您的本地命名空间并导致错误,尤其是在更新代码时。
  6. 当您遇到这样的问题时,请对您遇到的问题进行一些关键术语的谷歌搜索。这开始有点困难,因为你不总是知道google的条款,但从长远来看会帮助你。首先尝试编译程序并逐个解决这些错误,直到成功编译,然后尝试找出与您在程序的每个步骤中所期望的相比得到的输出。 / p>

答案 1 :(得分:0)

您的变量f属于int类型,当输入+或任何运算符时cin将设置错误标记,因为您试图存储{{1}在char变量和int中将继续忽略命令并可能导致系统崩溃。 并且变量不能仅仅因为它包含cin或任何其他运算符而不能使用运算符。并且您没有声明任何变量'+'我认为您的意思是res但是它最好使用变量就像结果一样,因为它更有意义 (想象一下代码sum !!它更好sum = a * b)。

你应该

  1. 使用决策制作结构,例如result = a * bif elseswitch运算符。 看看CPP Tutorials decision making
  2. 虽然我认为你应该从here

    开始

    我认为你的代码应该是

    ?:
  3. PS 如上所示学会正确打算,它将帮助您找到大块代码中的错误并使其更易于理解。并且还避免使用int main() { int result, a, b; char f; std::cout << "what is the first number \n "; std::cin >> a; std::cout << " '+' '-' '*' or '/'? \n"; std::cin >> f; std::cout << "whats the second number \n"; std::cin >> b; if (f == '+') result = a + b; else if (f == '-') result = a - b; else if (f == '*') result = a * b; else if (f == '/') { if(b == 0) { std::cout<<"Division by zero!!\n"; system("pause"); return 0; } result = a / b; } else { std::cout<<"Sorry wrong operator \n"; system("pause"); return 0; } std::cout << "answer is: " << result << '\n'; return 0; } 指令,因为如果您具有与using namespace中的名称相同的本地函数或变量,它可能会污染本地范围并产生问题。并尝试着一本好书开始。我也开始自学。