第一周算法设计与分析 F : 模拟计算器

简介: 该文章 "第一周算法设计与分析 F : 模拟计算器" 的摘要或讨论。这篇文章介绍了如何设计一个程序来模拟一个基本的计算器,处理包含加、减、乘运算的表达式,并给出了相应的C++代码实现

F : 模拟计算器

Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 107 Solved: 24

Description

给出n个数,和n - 1个运算符(只含有加减乘号,不含除号,按顺序填入n个数之间),要求输出该式的答案。

Input

单组数据。

第一行为n(2 ≤ n ≤ 100),且n为整数。

第二行为n个数,每个数a保证1 ≤ a ≤ 10,且为整数。

第三行为n - 1个运算符,运算符之间由空格隔开。

数据保证每一步运算结果不会超过 1018

Output

如题。

Sample Input

4 1 2 3 4
+* -

Sample Output

3

Hint

1 + 2 * 3 - 4 = 3

一、题目大意

设计一程序,具备加减乘的功能

二、思路

加减乘,里面有一个优先级的问题。由于加减乘都是二元运算符,所以要添加优先级的规则进去,最少需要三个数即可,构建这种优先级规则。
首先,初始化两个数字为p1,p2和运算符type。之后每次弹出一个运算符一个数字,与开头的p1,p2进行运算不断循环至结束。最后在针对p1,p2,与运算符type计算即可

#include<iostream>
using namespace std;
long long nums[111];
char arr[111];
int main()
{
    //1、输入部分
    int n;
    cin>>n;
    for(int i=0;i<n;i++)cin>>nums[i];//保存数字
    for(int i=1;i<n;i++)cin>>arr[i];//保存运算

    //2、处理部分
    long long p1=nums[0],p2=nums[1];//获取开头的两个数
    char type=arr[1];                //获取开头的字符

    for(int i=2;i<n;i++)
    {
        char curType=arr[i];//循环每次获取一个字符一个数字,这样同时间就有三个数字,两个加减乘字符
        long long curNum=nums[i];
        if(curType!='*')//如果这个字符不是乘法,那么就不必优先运算,将p1与p2运算并保存在p1里面,p2=新的数字,type=新的字符
        {

            if(type=='+') p1+=p2;
            else if(type=='-')p1-=p2;
            else p1*=p2;
            p2=curNum;
            type=curType;
        }
        else p2*=curNum;//否则先运算后面出现的两个数字

    }

    if(type=='-')cout<<p1-p2<<endl;
    else if(type=='+')cout<<p1+p2<<endl;
    else cout<<p1*p2<<endl;
    return 0;
}
相关文章
|
1月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
2月前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
52 6
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
99 1
|
4月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
4月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
4月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
4月前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
254 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
4月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
73 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
4月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
143 3
|
4月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
73 0

热门文章

最新文章