在C ++中没有2个操作数的数学计算器

时间:2017-09-22 22:19:35

标签: c++ visual-studio c++11 math visual-c++

该值从0开始,然后可以使用数学的任何操作数计算。代码编译成功但不起作用。终端窗口显示“中止”,“重试”和“取消”。规则是您不能使用2个操作数,而只是将前一个数字添加到当前操作数。

#include <iostream>
#include <cmath>

using namespace std;

void Input(double input);

int main()
{
    double sign, input;

    cout << "This program calculates any given number upto 1 decimal place using the following operators:" << endl;
    cout << " '+' - Addition." << endl;
    cout << " '-' - Subtraction" << endl;
    cout << " '*' - Multiplication." << endl;
    cout << " '^' - Root." << endl;
    cout << " '/' - Division." << endl;

    Input(input);

    return 0;
}

void Input(double IN)
{
    char q;
    char sign;
    int Val = 0.0;

    cin >> sign >> IN;

    while (IN != q)
    {

        if (sign = '-')
            Val -= IN;
        if (sign = '+')
            Val += IN;
        if (sign = '*')
            Val *= IN;
        if (sign = '/')
            Val /= IN;

        cout << endl << "Result so far is " << IN;

        IN++;
    }
}

1 个答案:

答案 0 :(得分:0)

您的主要问题是

  1. q未定义,因此while(IN != q)将成为未定义的行为
  2. C++中,对于任何原始数据类型=表示赋值运算符,而不是比较运算符。要比较某些内容,请使用==
  3. Val是一个int数据类型的变量,但赋值为0.0,这是一个浮点数或双精度数。
  4. 您的程序在if语句中执行的操作是:(例如,此if语句)

      

    if (sign = '-')

    1. 该程序将-的值45分配给sign变量
    2. if语句检查变量sign的值0
      • 如果值为0,则语句被视为false并且该块被跳过
      • 如果值不是0,则语句会被视为true并输入块
    3. 程序运行if
    4. 中的代码

      程序为代码中的每个if语句执行所有这3项操作,并且我很少在Windows中运行自己的代码,因此我无法确定为什么程序会给{{1} 1}}错误

      一点建议,每当需要使用多个Run-Time Check Failure #3-T语句时使用switch,因为它更容易阅读。