C++ 计算多个算术表达式
编写一个更好的计算器版本calc2.cpp,它可以计算多个算术表达式。让我们使用分号符号,该符号必须在输入中每个表达式的末尾使用 假设输入文件formulas.txt如下所示: 十五, 10+3+0+25 5+6-7-8+9+10-11 当我们使用该输入运行程序时,输出应计算所有表达式,并在各自的行上打印它们: $./calc2C++ 计算多个算术表达式,c++,C++,编写一个更好的计算器版本calc2.cpp,它可以计算多个算术表达式。让我们使用分号符号,该符号必须在输入中每个表达式的末尾使用 假设输入文件formulas.txt如下所示: 十五, 10+3+0+25 5+6-7-8+9+10-11 当我们使用该输入运行程序时,输出应计算所有表达式,并在各自的行上打印它们: $./calc2>总和; 而(cin>>opr>>值) { 开关(opr) { 格“+”:++ 总和+=数值; 打破 案例'-': 总和-=价值; 打破 } } cout我认为没有办法按
#include<iostream>
#include<string>
using namespace std;
int main() {
char opr;
int value;
int sum=0;
cin >> sum;
while (cin >> opr >> value)
{
switch (opr)
{
case '+': ++
sum += value;
break;
case '-':
sum -= value;
break;
}
}
cout<<sum<<endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
char-opr;
int值;
整数和=0;
cin>>总和;
而(cin>>opr>>值)
{
开关(opr)
{
格“+”:++
总和+=数值;
打破
案例'-':
总和-=价值;
打破
}
}
cout我认为没有办法按照你说的做……因为你必须指定输入的结尾。否则编译器将无法确定输入,并且它将无限期地读取。因此你必须以某种方式指定输入的结尾。你可以在开关中添加一个额外的大小写来处理';
和一个extradefault
case如果文件包含非法的运算符字符以捕获简单的打字错误
while (cin >> opr >> value)
{
switch (opr)
{
case '+':
sum += value;
break;
case '-':
sum -= value;
break;
case ';':
cout<<sum<<endl;
sum = value; // set first value of next equation as sum to set up for next
break;
default:
cerr << "Invalid operation! Exiting program!";
return -1;
}
}
阅读第15页
while (cin >> opr >> value)
读取;到opr
中,并将第二个等式中的10值读取到值中
switch (opr)
case '+'
运行
它打印出sum
,将sum
设置为10并循环回
while (cin >> opr >> value)
while (cin >> opr >> value)
它将+读入opr
并将3读入值
switch (opr)
case '+'
运行并将sum
设置为10+3,然后循环返回到
while (cin >> opr >> value)
while (cin >> opr >> value)
它将;读入opr
,然后由于没有要读取的值而失败。这将在不打印任何内容的情况下退出
黑客修正是
while (cin >> opr >> value)
{
switch (opr)
{
case '+':
sum += value;
break;
case '-':
sum -= value;
break;
case ';':
cout<<sum<<endl;
sum = value; // set first value of next equation as sum to set up for next
break;
default:
cerr << "Invalid input! Exiting program!";
return -1;
}
}
cout<<sum<<endl;
while(cin>>opr>>值)
{
开关(opr)
{
格“+”:
总和+=数值;
打破
案例'-':
总和-=价值;
打破
格“;”:
能否提出解决问题的建议:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int val;
while (cin >> val)
{
string op;
while (cin >> op)
{
if (op == ";")
{
cout << val << endl;
break;
}
int num;
if (! (cin >> num)) {
cout << "a number is expected after '" << op << '\'' << endl;
return -1;
}
if (op == "+")
{
val += num;
}
else if (op == "-")
{
val -= num;
}
else {
cout <<"invalid operator '" << op << '\'' << endl;
return -1;
}
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int-val;
while(cin>>val)
{
字符串op;
而(cin>>op)
{
如果(op==“;”)
{
库特数){
cout看起来您正在做与相同的家庭作业。它是,但作业需要在没有的情况下完成。就操作员>
而言,流就是流。无论您是否使用cin
、文件、stringstream
、网络套接字的包装器或其他任何方式。如果是ext结束std::istream
,它会起作用。也就是说,看起来你对作业的解释是正确的。如果Intisar Ratul是同学,你应该帮他们一个忙,让他们知道他们误读了作业。