关闭

NYOJ 128 前缀式求值

326人阅读 评论(0) 收藏 举报

题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=128

需要理解递归的过程,中间的读取字符串%n可以获得已读取的位数,参考代码:

 
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;

char str[2000];
int pos,len;
double ope()
{
	double val = 0;
	int n;
	switch(str[pos])
	{
	case '+':pos += 1;return ope() + ope();
	case '-':pos += 1;return ope() - ope();
	case '*':pos += 1;return ope() * ope();
	case '/':pos += 1;return ope() / ope();
	case ' ':pos++;return ope();
	default:
		sscanf(&str[pos],"%lf%n",&val,&n);
		pos += n;return val;
	}
}

int main()
{
	while(gets(str))
	{
		pos = 0; len = strlen(str);
		printf("%.2lf\n",ope());
		memset(str,0,sizeof(str));
	}
	return 0;
}        


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56750次
    • 积分:1346
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:6篇
    • 译文:0篇
    • 评论:25条
    最新评论
    好友博客