第六次课程作业
题目描述
本次作业要求将四则运算的核心部分采取栈的知识进行解决。即表达式生成的合法性检验、表达式结果计算。
学习C++界面编程,可以学QT、MFC或者VS,选择其一即可,用博客记录学习到的知识以及心得体会。
本次作业中将四则运算中的核心部分用栈的知识解决,最开始的程序已经实现,因为还通过逆波兰式实现,这里我就贴出后面通过栈计算逆波兰式的代码。
/*根据逆波兰式,求出表达式的值,放到私有成员value中。结果如果是整数,则返回整数。如果不是整数,返回FALSE。*/
int Expression::ExpressionValue()
{
Stack s;
int size = reversePolishNotation.length();
int num1, num2;//因为有用#代表10,就先用int存
int i;
for (i = 0; i < size; i++)
{
switch (reversePolishNotation[i])
{
case'+':
num1 = s.top();
s.pop();
num2 = s.top();
s.pop();
s.push(num1 + num2);
break;
case'-':
num1 = s.top();
s.pop();
num2 = s.top();
s.pop();
s.push(num2 - num1);
break;
case'*':
num1 = s.top();
s.pop();
num2 = s.top();
s.pop();
s.push(num1 * num2);
break;
case'/':
num1 = s.top();
s.pop();
num2 = s.top();
s.pop();
//只有做除法时可能出现答案为非整数的情况
if (num2%num1 == 0)
{
s.push(num2 / num1);
}
else
{
return FALSE;
}
break;
case'#'://数值10
s.push(10);
break;
default://其他数值
s.push(reversePolishNotation[i] - '0');
break;
}
}
value = s.top();
return value;
}
然后对于界面编程的学习,因为之前一直在做PTA的作业,感觉这次作业有些些比平时的多了一些,比较赶,所以界面编程只是学习了一小部分,具体的还没有实现。我学习的是MFC实现,首先是VS上必须先安装MFC界面编程需要的插件。
主要步骤分为以下几步:
1.创建一个基于对话框的MFC项目
2.之后对于控件以及其他的设置:
添加控件-设置控件
3.控件消息响应函数具体代码部分添加
具体的代码我还未能实现,之后会补上。
推荐MFC界面编程的博客
感想:在栋哥的带领下一步一步的朝真正的程序设计师方向前进