第三阶段

第三阶段要求对程序进行扩展,可供选择的方向很多,经过我们两人的讨论后决定选择第四个方向:

  • 选一个你从来没有学过的编程语言,试一试实现基本功能。

          估计做好这个软件需要的时间,并且写出大概的设计步骤和实现算法。

 

(1)、语言选择:

因为我们都还没学过面向对象的程序设计语言,所以打算运用C++来试一试实现这个程序;

 

(2)、时间估计:

C++语法与C类似,所以在原有程序的基础上,应该能在8小时内完成这个新程序

 

(3)、设计步骤:

首先,我们了解了一下C++与C的主要区别:

  • C是面向过程的语言,而C++是面向对象的语言;

 

  • C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还有new/delete关键字;

 

  • C中的struct和C++的类,C++的类是C所没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使struct在C++中可以和class一样当做类使用,而唯一和class不同的地方在于struct的成员默认访问修饰符是public,而class默认的是private;

 

  • C++支持函数重载,而C不支持函数重载,而C++支持重载的依仗就在于C++的名字修饰与C不同,例如在C++中函数int fun(int ,int)经过名字修饰之后变为 _fun_int_int ,而C是 _fun,一般是这样的,所以C++才会支持不同的参数调用不同的函数;

 

  • C++中有引用,而C没有;

 

  • C++全部变量的默认链接属性是外链接,而C是内连接;

 

  • C 中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以;

 

  • 局部变量的声明规则不同,多态,C++特有输入输出流之类等

 

  • ……

设计思路与前面类似,函数所实现的功能相同,只是多了创建不同的类

 

(4)、代码说明:

 

函数类

class Equation{
	public:
		Equation(){
			power=lab=0;
		}
		~Equation(){
			
		}
		bool power;
		int lab;
		string str;	//表达式 
		void create(string &str);
		void infix_to_suffix(string &infix,string &suffix);
		double suffix_value(string suffix);
		void float_to_fraction(double x);
};

  

表达式类

class Create{
	public:
		Create(){
			x=y=z=w=bracket=len=0;
			b_flag=1;
		}
		int x;	//被操作数 
		int y;	//操作数 
		int z;	//运算符 + - * / ^ 
		int w;	//运算符+ - 
		int bracket;	//括号
	    int b_flag;
		int len;	//表达式长度 
		
};

 

其余函数的功能与C语言版本类似,不再做具体说明。

猜你喜欢

转载自www.cnblogs.com/szys/p/9025059.html