【多位数】【多重括号】【带负数】【字符表达式运算】【使用递归】【不用栈实现】

这是一个使用递归和C#编写的程序,用于计算包含多位数、多重括号、负数和各种运算符的字符表达式。程序首先通过取括号下标和多重括号运算函数处理括号内的表达式,然后通过无括号表达式的计算函数获取最终结果。示例中展示了如何处理不同类型的输入表达式。
摘要由CSDN通过智能技术生成

 

/1.多位数            2.多重括号                 3.可带负数。。。。。。。。。

修改函数【计算无括号表达式】和【多重括号运算】。。。。。。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //string s = "(3*((1+2)*4/(1+1)))-(2*(4-2))";
            //string s = "(1*(2+10)+1)-4";
            //string s = "2*(6*(2-6)/(1+1))-((-2)*2)+(((1+1)+1)+1)";
            string s = "(-12-3*(222-224))+(-5)*(-12)/(11-13)+(11+33)";
            //string s = "-12+(-10)*(2-4)/(-2)";
            char[] str = new char[s.Length];
           
            for (int i = 0; i < s.Length; i++)
            {
                str[i] = s[i];
                //Console.Write(str[i]);
            }
            int[,] KuoHao_Index = new int[10, 2];
            //取括号下标(str, KuoHao_Index);
            int a = 多重括号运算(str, str.Length);
            //for(int i=0;


            Console.WriteLine("ZhangBilei: " + a);
            Console.ReadLine();
        }
        public static void 打()
        {
            Console.WriteLine("FSDFSDFSDFDSF");
        }
        public static void 取括号下标(char[] str, int[,] KuoHao_Index)
        {
            int label = 1;//label记录括号的层次
            int length = str.Length;//记录str的长度
            int count = 0;//记录括号的对数
            bool left = false;//第一层中的当前左括号下标已经录入则left为true;
            //bool right = false;//第一层中的当前右括号下标已经录入则right为true;


            for (int i = 0; i < length; i++)
            {
                if (str[i] == '(')
                {
                    if (left == false && label == 1)
                    {
                        KuoHao_Index[count, 0] = i;
                        left = true;
                       
                    }
                    else
                        label++;
                }
                if (str[i] == ')')
                {
                    if (left == true && label == 1)
                    {
                        KuoHao_Index[count, 1] = i;
                        count++;
                       
                        left = false;
                    }
                    else
                        label--;
                }
            }

        }

 

        public static int 多重括号运算(char[] str, int length)
        {
            int[,] KuoHao_Index = new int[10, 2];//存括号的下标
            取括号下标(str, KuoHao_Index);


            //for (int i = 0; i < 10; i++)
            //{
            //    Co

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值