题目引用:http://116.56.140.75:8000/JudgeOnline/problem.php?cid=1097&pid=7
问题 H: 5-8.多项式的加减2
时间限制: 1 Sec 内存限制: 128 MB题目描述
在上一题的基础上,如果输入的多项式包含浮点数,你会做吗?
提示:浮点数不一定只有一位小数喔
输入
一个多项式加减法的字符串
输出
运算结果
样例输入
1+2+3.3-4
样例输出
2.3
解析:对字符串处理,取出每一个浮点型数据,进行计算
代码:
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int main()
{
char ch[1000];
cin >> ch;
int k = 0, x = 0;
double sum = 0, num[1000];
int strl=strlen(ch)-1;
for (int i = strl; i >= 0; i--)
{
if (ch[i] != '+'&&ch[i] != '-')
{
if (ch[i] == '.')
{
sum = sum*pow(10, 0 - k);
k = 0;
}
else
{
sum += ((ch[i] - '0')*pow(10, k));
k++;
}
}
else
{
if (ch[i] == '+')
num[x++] = sum;
if (ch[i] == '-')
num[x++] = (-1)*sum;
k = 0;
sum = 0;
}
if (i == 0)
num[x++] = sum;
}
sum = 0;
for (int j = 0; j < x; j++)
sum += num[j];
cout << sum;
return 0;
}
/**************************************************************
Problem: 2455
User: 201730685257
Language: C++
Result: 正确
Time:0 ms
Memory:1496 kb
****************************************************************/