zoukankan      html  css  js  c++  java
  • [MOOC程序设计与算法二] 递归二

     1.表达式计算 输入为四则运算表达式,仅由整数、+、-、* 、/ 、(、) 组成,没有空格,要求求其值。假设运算符结果都是整数 。"/"结果也是整数

    表达式也是递归的定义:

    表达式由项的+ -组成 ,项由因子的* / 组成,  因子可以是整数,也可以由带括号的表达式组成

    判断是否还有表达式,项和因子,需要只读不取,根据读出的字符确定是否需要取,并做后面的运算,否则会出错。

    cin.peek()只读一个字符而不取  cin.get()读取一个字符

    代码:

    #include <iostream>
    #include <stdio.h>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int factor_value()
    {
        int expression_value(void);
        int ret = 0;
        char c = cin.peek();
        if (c == '(') {
            c = cin.get();
            ret = expression_value();
            cin.get();
        }
        else {
            while (isdigit(c)) {
                c = cin.get();
                ret = ret*10 + c -'0';
                c = cin.peek();
            }
        }
        return ret;
    }
    
    int term_value()
    {
        int ret = factor_value();
        char c = cin.peek();
        while (1) {
            if (c == '*' || c == '/') {
                c = cin.get();
                if (c == '*')
                    ret *= factor_value();
                else ret /= factor_value();
                c = cin.peek();
            }
            else break;
        }
        return ret;
    }
    
    int expression_value()
    {
        int ret = term_value();
        char c = cin.peek();
        while (1) {
            if (c == '+' || c == '-') {
                c = cin.get();
                if (c == '+')
                    ret += term_value();
                else
                    ret -= term_value();
                c = cin.peek();
            }
            else
                break;
        }
        return ret;
    }
    
    int main()
    {
        freopen("1.txt", "r", stdin);
        cout << expression_value() << endl;
    
        return 0;
    }
  • 相关阅读:
    使用 Eclipse 平台共享代码
    给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
    学习
    eclipse优化
    约瑟夫环
    propedit插件
    OData 11 入门:实现一个简单的OData服务
    OData 14 OData语法(上)
    CLR via C# 读书笔记 54 在使用非托管资源情况下的GC
    面试:等车时间
  • 原文地址:https://www.cnblogs.com/whileskies/p/7301567.html
Copyright © 2011-2022 走看看