【字符串、栈】string转double

news/2025/2/12 8:41:02/文章来源:https://www.cnblogs.com/Tshaxz/p/18706407

stod函数

将string转为double

string t = s.substr(i, j - i);
double num = stod(t);

例题:货币单位换算

image

样例1
输入

2
20CNY53fen
53HKD87cents

输出

6432

说明:
20元53分+53港元87港分,换算成人民币分后汇总,为6432

样例2
输入

1
100CNY

输出

10000

说明:
100CNY转换后是10000fen,所以输出结果为10000

样例3
输入

1
3000fen

输出

3000

说明:
3000fen,结果就是3000

样例4
输入

1
123HKD

输出

10000

说明:
HKD与CNY的汇率关系是123:100,所以换算后,输出结果为10000


C++代码

#include <iostream>
#include <stack>using namespace std;
using i64 = long long;int n, sum;
stack<double> stk;double get(string &s)
{for (int i = 0; i < s.size(); i++){char x = s[i];if (isdigit(x)){int j = i;double num = 0;while (j < s.size() && isdigit(s[j])) j++;string t = s.substr(i, j - i);num = stod(t);stk.push(num);i = j - 1;}else if (isupper(x)){int j = i;string word;while (j < s.size() && isupper(s[j])) word += s[j++];double t = stk.top();stk.pop();if (word == "CNY") t *= 100;else if (word == "JPY") t = t / 1825 * 10000;else if (word == "HKD") t = t / 123 * 10000;else if (word == "EUR") t = t / 14 * 10000;else if (word == "GBP") t = t / 12 * 10000;stk.push(t);i = j - 1;}else if (islower(x)){int j = i;string word;while (j < s.size() && islower(s[j])) word += s[j++];double t = stk.top();stk.pop();if (word == "fen") t = t;else if (word == "cents") t = t / 123 * 100;else if (word == "sen") t = t / 1825 * 100;else if (word == "eurocents") t = t / 14 * 100;else if (word == "pence") t = t / 12 * 100;stk.push(t);i = j - 1;}}if (stk.size() > 1){double b = stk.top();stk.pop();double a = stk.top();stk.pop();stk.push(a + b);}return stk.top();
}int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n;while (n--){string s;cin >> s;sum += (int)get(s);}cout << sum;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881326.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ceph 16.2.15(Pacific)编译

目录获取ceph源码编译拉取submodule网络问题安装依赖do_cmake.sh编译vstart启动问题编译dashboard安装nodejs方法一 下载编译好的源码包方法二 nvm安装node(推荐)编译nodeenv其他boost下载慢总结以下流程在ubuntu22.04 和 openEuler20.03 都实际操作过获取ceph源码 从https:/…

【第四期书生大模型实战营】第2关 L0G2000 Python 基础知识

任务 任务概览任务类型 任务内容 预计耗时闯关任务 Leetcode 383(笔记中提交代码与leetcode提交通过截图) 20mins闯关任务 Vscode连接InternStudio debug笔记 10mins可选任务 pip安装到指定目录 10mins作业总共分为三个任务,两个闯关任务均完成视作闯关成功。 请将作业发布到知…

Redis 持久化策略及其优缺点

原文:Redis 有哪 2 种持久化方式?分别的优缺点是什么?,补充了 Redis 默认的持久化配置Redis 的读写操作都是在内存中,所以 Redis 性能才会高,但是当 Redis 重启后,内存中的数据就会丢失,那为了保证内存中的数据不会丢失,Redis 实现了数据持久化的机制,这个机制会把数…

Innotop:一款MySQL监控工具

在现代数据库管理中,MySQL作为广泛应用的开源关系数据库,已成为各类企业、开发者和数据库管理员(DBA)日常工作中不可或缺的工具。然而,随着数据库规模的增大和查询量的增加,MySQL服务器的性能监控变得尤为重要。为了确保数据库的高效运行和及时排除潜在问题,DBA们需要依…

Windows本地部署deepseek(小白向)

下载Ollama官网下载:ollama.com 点击Download选中Windows版本,点击Download for Windows下载是需要跳转github的,如果无法访问,需要尝试使用github加速器 推荐使用加速器FastGithub(免费,开源) 这里提供国内清华镜像下载 https://cloud.tsinghua.edu.cn/d/df482a15afb64…

SSE、EventSource了解

EventSource接口是web内容和服务器发送事件通信的接口 一个EventSource实例会对HTTP服务器开启一个持久化的连接,以text/event-stream格式发送事件 该连接会一直保持开启直到调用EventSource.close()关闭EventSource是一种Web API,用于建立和服务器之间的【单向持久化】连接 …

基于GD32的简易示波器

基于GD32的简易示波器项目学习 根据立创训练营项目:[简易数字示波器设计(入门版) - 立创开源硬件平台(https://oshwhub.com/course-examples/yi-qi-yi-biao-jian-yi-shu-zi-shi-bo-qi-she-ji-cha-jian-ban) 技术点:原理图绘制,PCB设计,打板,焊接。外部中断,定时器中断,…

DeepSeek本地化部署(Windows)

DeepSeek本地化部署(Windows) 安装 Ollama https://ollama.com/download/windowsCMD部署deepseek模型 https://ollama.com/ 网址中,在网页上方搜索框中输入 Deepseek-r1 1.5b: 需要1.1GB显存 7b: 需要4.7GB显存 8b: 需要4.9GB显存 14b: 需要9.0GB显存 32b: 需要20GB显存 70b…

第三章典型园区网的业务部署

第三章典型园区网的业务部署STP阻塞冗余的链路来避免环路形成,然后当链路故障时,STP可以快速启用被阻塞的链路,恢复连通性。

网站集成微信公众号(订阅号)登录

前一阵子,想着给我的站点集成一个微信登录,因为我之前从未有过微信相关的开发,所以我自己跟着网上的资料,一步一步的慢慢的摸索,过程不免的遇到了许多坑,才把我的网站微信登录集成完成,所以这里分享一下我的摸索的过程。因为我的是订阅号,所以一下的内容均针对订阅号而…

.NET周刊【2月第1期 2025-02-02】

国内文章 dotnet 9 已知问题 默认开启 CET 导致进程崩溃 https://www.cnblogs.com/lindexi/p/18700406 本文记录 dotnet 9 的一个已知且当前已修问题。默认开启 CET 导致一些模块执行时触发崩溃。 dotnet 使用 ColorCode 做代码着色器 https://www.cnblogs.com/lindexi/p/18687…

浅谈操作分块:从 Div.3 F 到 Ynoi

前言 分块是一种常见的处理信息的思想。 序列分块通常以 \(\mathcal O(q\sqrt n)\) 左右的时间复杂度对询问进行处理。观察序列分块的本质,其实是控制无法快速统计的部分较少,以至于可以暴力统计,剩下的部分采取诸如提前维护好每个块的答案再合并的方式快速统计。 而在答案具…