无法让它更新变量C++
Cant get this to update the variables C++
我正在编写一个计算器程序,您可以在其中输入总和,它会给您答案。这部分工作正常。我遇到的问题是取前一个总和的答案并用它进行计算。
喜欢:5 + 5 = 10
ans + 10 = 20
当我运行下面的代码时,它工作正常,一遍又一遍地进行正常计算。但是当我输入例如。 ans*2
它使用以前设置为 operate
和 numB
的值。因此,如果是:5 + 5
并且我想使用该结果并将其乘以例如 2,它将这样做: 10 + 5 = 15
这是我的代码:
#include <iostream>
#include <cmath>
#include <iomanip>
#include <sstream>
#include "bell.h"
using namespace std;
int main()
{
stringstream ss;
double numA;
char operate;
double numB;
double ans=0;
string temp;
cout<<"input: ";
getline(cin, temp);
ss.str(temp);
ss>>numA>>operate>>numB;
cout<<setprecision(9);
while(temp[0] != 'q' && temp[0] != 'Q')
{
if(temp[0]=='a' && temp[1]=='n' && temp[2]=='s')
{
numA=ans;
}
switch(operate)
{
case '+':
{
ans=numA+numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '-':
{
ans=numA-numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '*':
{
ans=numA*numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '/':
{
ans=numA/numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '^':
{
ans=pow(numA, numB);
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case 'z':
{
ans=bell(numA, numB);
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
default:
{
cout<<"Invalid input. Please try again!"<<endl;
}
}
ss.clear();
ss.str(" ");
cout<<"Input: ";
getline(cin, temp);
ss.str(temp);
ss>>numA>>operate>>numB;
}
cout<<"Goodbye"<<endl;
return 0;
}
有人可以帮我解决这个问题吗?为什么operate
和numB
不更新?
我怀疑问题出在这个陈述上:
ss>>numA>>operate>>numB;
numA
和 numB
属于 double
型。例如,如果输入行是 ans + 10
,则该语句将尝试从此输入的开头提取numA
作为双精度,这将失败,而不会消耗输入字符串的任何部分。因此,提取剩余值(operate
和numB
(不会给你预期的值,因为整个输入字符串在提取这些值时仍然有待解析。
一种方法是在读取输入行后立即检查ans
情况。然后,您可以使上述语句成为条件语句,针对ans
情况以不同的方式解析值。
另一种解决方案是首先将numA
值和numB
值提取为字符串变量,只有在检查ans
特殊情况后才将它们转换为双精度值。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用