gpt4 book ai didi

c++ - 使用 C++ 命令行的简单计算器

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:59 25 4
gpt4 key购买 nike

我正在编写一个项目,我们可以从命令行执行简单的计算器。用户以这种格式输入programname firstNumber operator secondNumber。这是我到目前为止得到的:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int main(int argc, char* argv[])
{
cout << fixed << setprecision(2);
if (argc != 4)
{
cerr << "Usage: " << argv[0] << " <number> <operator> <number>" << endl;
exit(0);
}
else
{
double firstNumber = atoi(argv[1]);
char theOperator = argv[2][0];
double secondNumber = atoi(argv[3]);
switch (theOperator)
{
case'+':
{
cout << "The answer is " << firstNumber + secondNumber << endl;
break;
}
case '-':
{
cout << "The answer is " << firstNumber - secondNumber << endl;
break;
}
case '*':
{
cout << "The answer is " << firstNumber * secondNumber << endl;
break;
}
case '/':
{
if (secondNumber == 0)
{
cout << "Can not devide by a ZERO" << endl;
break;
}
else
{
cout << "The answer is " << firstNumber / secondNumber << endl;
break;
}
}
}
}
}

我遇到了一个问题,我的项目对十进制数的计算有误。例如,如果我做 2.5 + 1.25,结果是 3。谁能帮帮我?我是 C++ 新手

最佳答案

其他答案是正确的,但我将使用 strtod 进行宣传而不是 Eris 名称中的 atof,因为它更容易检查输入的正确性。

char * endp;
double firstNumber;
if (argv[1][0] != '\0')
{ // input string is not empty
firstNumber = strtod (argv[1], &endp);
if (*endp != '\0')
{ // number didn't end at the end of the string. String not a number.
cout << "First number was not a number, dude." << endl;
return 0;
}
}
else
{
cout << "Can't do much without a number, dude." << endl;
return 0;
}

使用 atof,可以用“我是现代少将的典范”调用程序并产生结果。结果不好,但结果都一样。

哦,还有关于在 C++ 中调用 exit 的警告。该程序就在那里停止,并且没有调用任何析构函数。这里没有坏处,但不是养成的好习惯。

关于c++ - 使用 C++ 命令行的简单计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com