模拟计算器

本次课程设计任务是创建一个模拟计算器,支持加减乘除、括号运算以及SQR和ABS函数,针对整型表达式进行计算。设计中需考虑错误处理,如运算符限制条件,同时要求具备图形用户界面。
摘要由CSDN通过智能技术生成

数据结构的课程设计。。

设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。

设计要求:

(1)要检查相关运算的限制条件,并对错误的条件产生报警。

(2)有图形用户界面。


#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"stack"
#include"algorithm"
#include"iostream"
#define Maxlen 500
using namespace std;
int Flag;    //对于最终结果的标志变量
void menu()  //菜单栏函数
{
    printf("         --------------  欢迎使用全球最低端的计算器  --------------\n");
    printf("         | 1.本计算器合法符号为'+'、'-'、'*'、'/'、'('、')'、'.'  |\n");
    printf("         |   'ABS()'、'SQR()',字母不区分大小写且可进行任意迭代。 |\n");
    printf("         | 2.本计算器可以实现浮点数的计算,计算结果将保留6位小数。|\n");
    printf("         | 3.本计算器比较低端,所以数据范围不能超double。         |\n");
    printf("         | 4.本计算器比较低端,所以计算表达式的长度上限为500。    |\n");
    printf("         | 5.输入'END'不包括引号,结束本程序。                    |\n");
    printf("         ----------------------------------------------------------\n");
}
double fabs(double x)   //求绝对值,因为原型处理数字超过9位会出现错误
{
    if(x<0) return -x;
    return x;
}
void false_printf()    //对于不同的错误,输出提示信息。
{
    switch(Flag)
    {
    case 2:
        printf("您好,您输入的括号不匹配。\n");
        break;
    case 3:
        printf("您好,您输入的表达式不符合逻辑。\n");
        break;
    case 4:
        printf("您好,您的输入包含非法字符。\n");
        break;
    case 5:
        printf("您好,您的运算过程中出现除数为零。\n");
        break;
    case 6:
        printf("您好,您的运算过程中出现开方数小于零。\n");
        break;
    }
    return;
}
void judge(char *p,char *q)  //实现判断表达式并且将正确的表达式转换为后缀式
{
    int i=0,j=0;          //i表示p的下标,j代表q的下标
    int f=1;              //判断当前字符是否与左括号相邻,默认相邻,用于取正、取负的运算。
    int sum=0;            //判断括号是否匹配
    for(i=0; p[i]; i++)   //判断括号是否匹配以及是否有非法字符
    {
        if(p[i]=='s' || p[i]=='S')   //判断是否是完整的SQR
        {
            if(p[i+1]!='q' && p[i+1]!='Q')
            {
                Flag=4;
                return ;
            }
            if(p[i+2]!='r' && p[i+2]!='R')
            {
                Flag=4;
                return ;
            }
            if(p[i+3]!='(')
            {
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值