MFC之静态调用DLL实现简易计算器

本文介绍如何使用MFC框架通过静态调用DLL来实现一个具有加、减、乘、除、求模等功能的简易计算器。DLL采用C++实现表达式求值,利用后缀表达式和双栈策略进行计算。首先需要包含DLL的头文件lib.h,然后即可在MFC程序中使用DLL提供的类。
摘要由CSDN通过智能技术生成

题目描述:

请使用MFC框架或者Windows API实现一个简单的计算器,主要实现以下功能:

(1)程序必须有操作UI,不能是控制台程序。

(2)计算功能包括:加、减、乘、除、求模、求余、位移运算

所有计算因子必须是可输入的,不能内置在代码里面。


1、DLL使用C++实现表达式求值,后缀表达式求值,利用两个栈来模拟实现表达式求值

此处设计DLL的类导出

/*
	堆栈类,用于表达式求值
*/
#include<iostream>
#include<string>
//#include<string.h>
#include<stdlib.h>

using namespace std;

#ifndef STACK_SIZE
#define STACK_SIZE 100
#endif

#ifndef LIB_H
#define LIB_H

#ifdef DLL_FILE
class _declspec(dllexport) myStack //导出类
#else
class _declspec(dllimport) myStack //导入类
#endif
{
	private:
		float value[STACK_SIZE];//存放数值
		int pop_v;
		char sign[STACK_SIZE];//存放运算符
		int pop_s;
		float result;//存放表达式最终的值
	public:
		myStack()
    {
	    pop_v = -1;
	    result = 0;
	    pop_s = -1;
	    memset(value,0,sizeof(value));
	    memset(sign,'\0',sizeof(sign));
    }
		bool push(float val);//压栈
		bool push(char ch);
		float pop_value();//出栈
		char pop_sign();
		float getPop_v();//获取栈顶元素
		char getPop_s();
		void divideExp(char* expression);//拆分表达式
		float Calculate();
		~myStack();
};
#endif

类实现:

#ifndef DLL_FILE
#define DLL_FILE
#endif

#include"lib.h"

bool myStack::push(float val)
{
	if(pop_v < STACK_SIZE)
	{
		pop_v++;//栈顶指针加1
		value[pop_v] = val;
		return true;
	}
	return false;
}
bool myStack::push(char ch)
{
	if(pop_s < STACK_SIZE)
	{
		pop_s++;//栈顶指针加1
		sign[pop_s] = ch;
		return true;
	}
	return false;
}
float myStack::pop_value()
{
	float rt;
	if(pop_v != -1 && pop_v < STACK_SIZE)
	{
		rt = value[pop_v];
		pop_v--;//栈顶指针减1
		return rt;
	}
	return -1;
}
char myStack::pop_sign()
{
	cha
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值