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

Posted

技术标签:

【中文标题】C ++中没有2个操作数的数学计算器【英文标题】:Math Calculator without 2 operands in C++ 【发布时间】:2017-09-22 22:19:34 【问题描述】:

该值从 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++;
    

【问题讨论】:

强烈建议您明确指出给您带来麻烦的原因。我可以在代码中看到一个可能是问题的重复错误,但我宁愿有固定的球门柱。 程序不行,我想根据提供的操作符号来计算个数。 哪里不行?什么线条/表达?它做了什么而不是你想让它做什么? 它编译成功但不起作用。它说“运行时检查失败 #3-T” 您解决了所有编译器警告吗?编译器警告是来自编译器的重要消息,即使语法正确,您的逻辑也可能不正确。 【参考方案1】:

你的主要问题是

    q 未定义,因此 while(IN != q) 将变为未定义行为 在C++ 中,对于任何原始数据类型= 表示赋值运算符,而不是比较运算符。要比较某些内容,请改用 ==Val 是一个具有 int 数据类型的变量,但赋值为 0.0,这是一个浮点数或双精度值。

你的程序在 if 语句中的作用是:(例如这个if 语句)

if (sign = '-')

    程序将- 的值45 赋给sign 变量 if 语句检查变量sign 的值0 如果值为0,则语句被认为是false 并跳过该块 如果值不是0,则语句考虑true并进入块 程序运行if块内的代码

该程序为您代码中的每个 if 语句执行所有这 3 件事,我很少在 Windows 中运行我自己的代码,所以我不太确定为什么程序会给出 Run-Time Check Failure #3-T 错误

一点建议,当您需要使用多个if 语句时使用switch,因为它更易于阅读。

【讨论】:

值得编辑添加 Val 是一个整数,它会丢弃所有计算的分数,而 IN 作为参数没有任何作用。 "Run-Time Check Failure #3-T" 几乎可以肯定,当 inputmain 中未初始化使用或 qInput 中未初始化使用时,Visual Studio 会停止程序。 @user4581301 谢谢提醒,这么简单的数据类型错误怎么可能忽略。但是Val作为一个整数并被分配给/=对我来说不是一个主要问题,因为我不完全理解程序的初衷是什么,我只是指出了一些容易错过的错误,并使用IN 作为没有任何真实参数的函数参数也没什么大不了的,因为它更多的是关于“如何编写正确的代码”而不是“如何编写工作代码”(因为有时我使用一次性参数来选择哪个函数用于函数重载)。 @user4581301 如果我的理解是正确的,那么Run-Time Check Failure #3-T 基本上是VS内置的未定义行为检查器吗?如果是这样,那么在未定义行为检查器中构建一个非常简洁 Visual Studio 的调试版本有各种各样的检查和调整,旨在让世界更安全,远离不良代码。他们不能得到一切,但他们工作得很好。

以上是关于C ++中没有2个操作数的数学计算器的主要内容,如果未能解决你的问题,请参考以下文章

关于离散数学的编程问题(数理逻辑部分)

组合数学里一些比较重要(有意思)的结论

高一数学韦恩图怎么画?

数学问题

MATLAB在数学建模中的应用

M打横写那个数学符号叫啥啊?有啥意义??