简易计算器程序设计思路及流程图

2016年03月03日 极乐鸟物语 暂无评论 阅读5787次

简易计算器程序设计思路及流程图

我们经常会在电脑、手机或网页上等使用简易计算器的程序。所谓简易计算器就是满足非专业人士的一般生活需求,一般也就是加减乘除了。

这样的简易计算器程序看似简单,但真正实现起来还是要好好设计一下思路的。

全局要保存的变量:

  • 第一个运算数:number1
  • 当前的运算符:newOper
  • 上次的运算数2:laatNum
  • 上一次的运算符:lastOper
  • 当前的运算数是否已输入完毕,也就是是否开始运算数2的输入:acceptNewNum

点击一个数字键(0-9)时的事件响应: 当前数 * 10 + 本次新的数字

点击一个运算符(+-*/)时的事件响应的流程图:

puls_operator.jpg


点击等于号(=)时的事件响应的流程图:

equal.jpg


伪代码:

float number1;
char newOper;
float lastNumber;
char lastOper;
bool acceptNewNum;
void pressOper(oper) {
    float number2;
    if (newOper == '') {
        // 1 + :的情况,之前的运算符全被消费了
        number1 = result.text.floatValue;
    } else {
        if (acceptNewNum) {
            // 连续点击多个运算符:1+-++-的情况
            // 直接进行最后的更新newOper和acceptNewNum
            // do nothing
        } else {
            number2 = result.text.floatValue;
            number1 = calculate(number1, number2, newOper);
            result.text = number1.toString();
        }
    }
    newOper = oper;
    acceptNewNum = true;
}
void pressEqual() {
    if (newOper == '') {
        if (lastOper == '') {
            // 1+2=
            // do nothing
        } else {
            // 1+2=[3];2= :的情况
            number1 = result.text.floatValue;
            result.text = calculate(number1, lastNum, lastOper).toString;
        }
    } else {
        number2 = result.text.floatValue;
        result.text = calculate(number1, number2, newOper).toString;
        lastOper = newOper;
        lastNum = number2;
        // 当前运算符已被消费,清空之
        newOper = '';
    }
    acceptNewNum = true;
} 


更新文本框结果信息时,要从float转换为String,需要注意删除float后面多余的0,应该使用%g而不是%f

分享本文至:

WRITTEN BY

avatar
本文标签:流程图calculator
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

欢迎留言




用户登录

sitemap