OpenJudge | 波兰表达式

embedded/2024/10/21 9:55:52/

总时间限制: 1000ms 内存限制: 65536kB

描述

波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。本题求解波兰表达式的值,其中运算符包括+ - * /四个。

输入

输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。

输出

输出为一行,表达式的值。
可直接用printf(“%f\n”, v)输出表达式的值v。

样例输入

* + 11.0 12.0 + 24.0 35.0

样例输出

1357.000000

提示

可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。
此题可使用函数递归调用的方法求解。

来源

计算概论05

思路

  1. 是操作符则递归调用函数,否则返回浮点数。
  2. 当到达第一层时,计算两个浮点数的值。

Code

C++

#include <bits/stdc++.h>
using namespace std;double function1() {char str[1000];double res1, res2, res;cin >> str;if(str[0] == '+' || str[0] == '-' || str[0] == '*' || str[0] == '/') {res1 = function1();} else if(str[0] == 0){return 0;} else {res1 = atof(str);return res1;}if(str[0] == '+' || str[0] == '-' || str[0] == '*' || str[0] == '/') {res2 = function1();} else if(str[0] == 0){return 0;} else {res2 = atof(str);return res2;}switch (str[0]) {case '+':res = res1 + res2;break;case '-':res = res1 - res2;break;case '*':res = res1 * res2;break;case '/':res = res1 / res2;break;}return res;
}int main() {double res = function1();cout << setprecision(6) << fixed << res;
}

测试用例

样例1

输入
* + 11.0 12.0 + 24.0 35.0
输出
1357.000000

样例2

输入
+ 1 1
输出
2.000000

样例3

输入
+ 1 + 1 1
输出
3.000000

样例4

输入
* + 2 3 4
输出
20.000000

http://www.ppmy.cn/embedded/86876.html

相关文章

ctfshow-web入门-php特性(web147-web150_plus)

目录 1、web147 2、web148 3、web149 4、web150 5、web150_plus 1、web147 ^&#xff1a;匹配字符串的开头。 $&#xff1a;匹配字符串的结尾&#xff0c;确保整个字符串符合规则。 [a-z0-9_]&#xff1a;表示允许小写字母、数字和下划线。 *&#xff1a;匹配零个或多个前面…

iPhone 在 App Store 中推出的 PC 模拟器 UTM SE

PC 模拟器是什么&#xff1f;PC 模拟器是一种软件工具&#xff0c;它模拟不同硬件或操作系统环境&#xff0c;使得用户可以在一台 PC 上运行其他平台的应用程序或操作系统。通过 PC 模拟器&#xff0c;用户可以在 Windows 电脑上体验 Android 应用、在 Mac 电脑上运行 Windows …

Golang 知识结构图

总结Go的入门知识结构&#xff0c;如下图所示&#xff1a;

09 ES6的模块化语法

ECMAScript 6&#xff08;简称ES6&#xff09;是JavaScript语言的下一代标准&#xff0c;其中引入了许多新特性&#xff0c;包括模块化语法。ES6的模块化语法允许开发者将代码分割成独立的模块&#xff0c;每个模块可以包含变量、函数和其他资源&#xff0c;并且可以在不同的文…

Spring RestTemplate:简化HTTP请求的利器

在现代Web开发中&#xff0c;HTTP请求是与外部服务交互的主要方式之一。Spring框架提供的RestTemplate工具&#xff0c;大大简化了HTTP请求的发送和处理过程&#xff0c;让开发者可以更加专注于业务逻辑的实现。本文将带你了解RestTemplate的基本用法及其在实际项目中的配置方法…

android前台服务

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、使用2.1 添加权限2.2 新建…

《数据结构1800题》基础回合总结——第1章 绪论

前言&#xff1a;《数据结构1800》这本书相信大家或多或少都有所耳闻&#xff0c;收录了诸多不同档次学校的考研真题&#xff0c;因为和汤老师的1800撞名所以备受调侃。这1800道题目里面有选择有填空&#xff0c;也有简答和一些编程题&#xff0c;总的来说质量良莠不齐——亦或…

【SpringBoot】1 Gitee

本项目 Gitee 地址&#xff1a;https://gitee.com/Lin_DH/system idea中可能装个gitee的插件&#xff0c;这样操作起来比较方便。 1&#xff09;登录 Gitee 官网&#xff08;https://gitee.com/&#xff09;&#xff0c;新建仓库。 2&#xff09;复制新建的 Gitee 仓库地址&am…