首页 > 编程语言 >KY129 简单计算器C++

KY129 简单计算器C++

时间:2024-01-18 22:23:19浏览次数:27  
标签:int KY129 back C++ else 计算器 push include

这是目前阶段做的最难最吃力的题目。调试了一遍又一遍去看逻辑上出现的各种问题。。。

#include<iostream>
#include<string>
#include<stack>
#include<map>
using namespace std;

int main(){
    map<char,int> m={
            {'+',0},{'-',0},
            {'*',1},{'/',1},
            {'#',-1}
    };
    string s;
    while(getline(cin,s)){
        s.push_back('#');
        if(s=="0") break;
        stack<float> f;
        stack<char> c;
        int i=0;
        while(i<s.size()){
            string a;
            for(;i<s.size();i++){
                if(s[i]<='9'&&s[i]>='0'){
                    a.push_back(s[i]);
                }else{
                    break;
                }
            }
            if(a.size()!=0) f.push(stof(a));
            if(s[i]==' ') {
                i++;
            }else{
                if(c.size()==0){
                    c.push(s[i]);
                    i++;
                }else{
                    if(m[s[i]]<=m[c.top()]){
                        float b=f.top();
                        f.pop();
                        float  a=f.top();
                        f.pop();
                        char x=c.top();
                        c.pop();
                        if(x=='+'){
                            a=a+b;
                        }else if(x=='-'){
                            a=a-b;
                        }else if(x=='*'){
                            a=a*b;
                        }else{
                            a=a/b;
                        }
                        f.push(a);
                    }else{
                        c.push(s[i]);
                        i++;
                    }
                }
            }
        }
        if(c.size()!=0 &&c.top()=='#') {
            printf("%.2f", f.top());
            break;
        }
    }
    return 0;
}

结果如下:

标签:int,KY129,back,C++,else,计算器,push,include
From: https://www.cnblogs.com/llllmz/p/17973537

相关文章

  • C++基础
    一、理论      1、虚函数 1.1、定义:​虚函数就是在类中被关键字virtual声明的函数,一般只在基类中声明虚函数。    1.2、规则:                   1、虚函数必须是......
  • C++多线程
    C++多线程的语法以及使用1.线程的创建首先创建一个多线程入口函数threadmain,threadmain函数体中完成子线程所要做的事。接着在主函数中创建线程对象th,调用构造函数,并传递一个函数指针作为入口函数:threadth(treadmain);入口函数为thread构造函数的参数。之后在主线程中......
  • 20. 有效的括号C++
    括号匹配用栈是解决是最简单那的。遇到左括号就入栈。遇到右括号就出栈,然后看是否匹配。这里再用一个map把括号数字化会更简单。classSolution{public:boolisValid(strings){map<char,int>m={{'(',1},{')',-1},{'{',2},{'}',-......
  • KY109 Zero-complexity TranspositionC++
    h很简单的题目,不管是用数组还是用栈都非常简单。#include<iostream>#include<stack>usingnamespacestd;intmain(){intn;while(cin>>n){stack<long>s;while(n!=0){inttem;cin>>tem;......
  • C++内存分配揭秘:new操作符::operator new和Placement new的区别
     在C++中,new 操作符、::operatornew 和placementnew是用于动态内存分配的工具,但它们有不同的用法和行为。以下是它们的区别和用法的详细实例:1.new操作符new 操作符用于在堆上动态分配内存,并调用对象的构造函数初始化对象。#include<iostream>classMyClass{p......
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界
    一、前言这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第二点,因为程序员擅长的是逻辑......
  • C++继承顺序
    派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为private。我们可以根据访问权限总结出不同的访问类型,如下所示:访问publicprotectedprivate同一个类yesyesyes派生类yesyesno外部的类yesnono......
  • 猫狗收容所 C++
    #include<iostream>#include<queue>usingnamespacestd;voiddelect(queue<int>*q,intx){if(q->empty())return;for(inti=0;i<q->size();i++){intt=q->front();q->pop();if(t!=x)q->push......
  • C++开发基础
    软件开发基础2024-01-0820:13星期一博客内容来自相关书籍和网站内容总结,仅供个人参考使用:笔者@东北大学StuBoo使用目录快速转到面试问题汇总、常见算法问题1.C++语言基础1.1C++语言特性概览面向对象编程(OOP):C++支持面向对象编程,包括封装、继承和多态。通过类和对象,可......
  • c++开发面试Q&A
    面试问题Q&A现阶段问题还没有归类,等待更新C++语言基础QC和C++两者优缺点,适合情况C语言特点:优点:简洁、高效、可移植性强、面向过程、底层控制、资源利用高。适用情况:嵌入式系统、操作系统、编译器、硬件驱动开发、对性能要求高的系统。C++语言特点:优点:面向对象、支持......