基本四则运算实现

 1 #include <iostream>
 2 #include <stack>
 3 using namespace std;
 4 stack<char> optr;
 5 stack<int> opnd;
 6 int oplevel(char op)
 7 {
 8     if(op==‘=‘)
 9     {
10         return 0;
11     }
12     else if(op==‘+‘||op==‘-‘)
13     {
14         return 1;
15     }
16     else if(op==‘*‘||op==‘/‘)
17     {
18         return 2;
19     }
20     else
21     {
22         return -1;
23     }
24 }
25 bool precede(char opa,char opb)
26 {
27     return oplevel(opa)>=oplevel(opb);
28 }
29 int calculate(int a,char op,int b)
30 {
31     if(op==‘+‘)
32     {
33         return a+b;
34     }
35     else if(op==‘-‘)
36     {
37         return a-b;
38     }
39     else if(op==‘*‘)
40     {
41         return a*b;
42     }
43     else if(op==‘/‘)
44     {
45         if(b!=0) return a/b;
46         else return 0;
47     }
48     else
49     {
50         return 0;
51     }
52 }
53 int main()
54 {
55     optr.empty();
56     opnd.empty();
57     optr.push(‘=‘);
58     char *exp=(char *)malloc(20*sizeof(char));
59     cin>>exp;
60     int i=0;
61     while(exp[i]!=‘=‘ || optr.top()!=‘=‘)
62     {//1+3*2-9/3=
63         if(exp[i]>=‘0‘&&exp[i]<=‘9‘)
64         {
65             opnd.push(exp[i]-‘0‘);
66         }
67         else
68         {
69             while(optr.top()!=‘=‘ && precede(optr.top(),exp[i]))
70             {
71                 int a,b;
72                 b=opnd.top();
73                 opnd.pop();
74                 a=opnd.top();
75                 opnd.pop();
76                 a=calculate(a,optr.top(),b);
77                 optr.pop();
78                 opnd.push(a);
79             }
80             if(exp[i]==‘=‘) break;
81             optr.push(exp[i]);
82         }
83         i++;
84     }
85     cout<<opnd.top()<<endl;
86     return 0;
87 }
时间: 2024-11-05 17:43:04

基本四则运算实现的相关文章

自动生成小学四则运算题目(C语言)

这个简易四则运算是我在百度上找的博主叫53余雅诗的一篇c语言代码,网址为http://www.cnblogs.com/ys1101/p/4368103.html,功能是可以选择加减乘除进行简易的四则运算,判断对错.我在VS2017上编译没有bug,因为功能只有整数运算,所以我在此基础上加了真分数的四则运算以及统计得分等,最后成功运行程序.我把我的源代码放在github上,地址为https://github.com/xiaofancheng/helloworld.

四则运算题目生成程序

a.需求分析 看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习.练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 =

四则运算题目生成程序(基于控制台)

题目描述: 能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 运算符为 +, ?, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率 要求能处理用户输入的真分数, 如 1/2, 5/12 等 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 功能设计: 1.  通过随机数的生成,实现+, ?, ×, ÷的确定 2.  +, ?, ×, ÷分别赋予整

第一周 结对编程四则运算

项目需求:程序随机生成四则运算计算题,并在用户填写答案后判断答案正误. 结对成员:李峤 任务分配:算法思想及采用的主要函数由李峤负责. 部分代码输入及结果测试由本人负责. 大体分成两个模块 :1.随机生成四则运算计算题 2.判断录入答案正误 主要代码如下: 1 #include<stdio.h> 2 #include<string.h> 3 #include<time.h> 4 #include<stdlib.h> 5 int main() 6 { 7 ch

判断随机生成的四则运算结果

功能:1.随机生成一个四则运算 2.用户输入式子结果后判断是否正确(结果取整) #include<stdio.h> #include<string.h> #include<stdlib.h> #include<stack> using namespace std; int n,t,n1; struct ZX { char a; bool b;//if b=0 括号 if b=1 数字 } ; stack<ZX>s1; void atersz(ZX

四则运算作业初步_064121陶源

这个四则运算的功能很有限,只能进行两个数的加减乘除四种运算,能显示最简分数结果,但没法将能化为整数的分数变成整数,比如6/3,最后会显示成2/1. 代码类型是C++,技巧上,参考了网上的operator重载操作符这个技巧,自己本不知道这个知识点. 分数化简的过程自己也是参考了其他资源,然后自己仔细阅读并理解,在旁边用例子注释. 编译平台是在Mac OS系统的Xcode上编译的,第一次在非vc++平台上编译. 代码:                                        

二柱子四则运算3

二柱子四则运算3 可怜的二柱子……又一次被坑了…… 老师又在上次的“二柱子四则运算2”的基础上增添了要求,如下: 1.学生写的程序必须能判定用户的输入答案是否正确.直到题目结束,告诉用户做对了几道题. 2.程序必须能处理四种运算的混合模式. 注意:连续的减法和除法,应该遵守左结合的规定. 连续除法要打括号,否则会引起歧义. 一.实验思路 二.实验源代码 三.实验总结和反思 最后,附上我和我的小伙伴的工作照……没有正脸.老师们不要介意啦啦啦~~~~ 小伙伴博客内容页:http://www.cnbl

软件工程第一次作业,小学生四则运算的出题程序

一.背景 阿超有个儿子上小学二年级,老师每天让家长给孩子出30道加减法题,虽然不多,但是每天都做也算是个负担,阿超作为一个老牌程序员当然想用计算机来解决这个小问题,目前对于这个问题对于任何语言都不是问题,比如: C/C++.C#.Java.Python.VB.JavaScript.Perl…… 具体要求如下: 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!) 除了整数外,还要支持真分数的四则运算 请大家用任何一种自己擅长的语言来编写这段程序,并把程序的介绍和自

软件工程之四则运算--Github

由于现在配置问题,然后借用同学电脑将代码上传至Github,网址为:https://github.com/be821/RealFour 参考相关Github文档: 1. http://my.oschina.net/u/1050949/blog/194536?fromerr=IBt08Hdf 2. http://www.linuxidc.com/Linux/2013-06/85372p3.htm 3. http://blog.csdn.net/yanzi1225627/article/detail

四则运算封装

form1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace 四则运算 { public partial class Form1