亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? calculator.cs

?? function recognition
?? CS
?? 第 1 頁 / 共 2 頁
字號:
?

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<String> expressions = new List<String>();
            while (true)
            {
                Console.WriteLine("Menú:\n1.- Escriba nueva expresión.\n2.- Busque una expresión ya escrita.\n3.- Salir.");
                Console.Write("Decisión: ");
                int decision = 0;
                try
                {
                    decision = int.Parse(Console.ReadLine());
                }
                catch (Exception exc)
                {
                    break;
                }
                if (decision == 1)
                {
                    Console.Write("Escriba la expresión: ");
                    String expr = Console.ReadLine();
                    expr = expr.Replace(" ", "");
                    int process = 0;
                    while (true)
                    {
                        try
                        {
                            Console.Write("Escoja el número de procesadores: ");
                            process = int.Parse(Console.ReadLine());
                            while (process < -1 || process > 8)
                            {
                                Console.Write("Escoja el número de procesadores: ");
                                process = int.Parse(Console.ReadLine());
                            }
                            break;
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Formato inválido");
                            continue;
                        }
                    }
                    if (Validate(expr))
                    {
                        expressions.Add(expr);
                        Resolve(expr, process);
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("La expresión es incorrecta\n");
                        continue;
                    }
                }
                else if (decision == 2)
                {
                    if (expressions.Count == 0)
                        Console.WriteLine("No existen expresiones\n");
                    else
                    {
                        Console.WriteLine("Escoja la expresión que desea evaluar, escriba 0 para regresar al menú:");
                        int subdecision = 1, process = 0;
                        String exprChosen = "";
                        while (true)
                        {
                            int i = 1;
                            foreach (String expr in expressions)
                                Console.WriteLine("{0}: {1}", i++, expr);

                            while (true)
                            {
                                try
                                {
                                    Console.Write("Escoja el número de la expresión: ");
                                    exprChosen = expressions[(int.Parse(Console.ReadLine())) - 1];
                                    break;
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine("La decisión no es válida");
                                    continue;
                                }
                            }

                            try
                            {
                                Console.Write("Escoja el número de procesadores: ");
                                process = int.Parse(Console.ReadLine());
                                while (process < -1 || process > 8)
                                {
                                    Console.Write("Escoja el número de procesadores: ");
                                    process = int.Parse(Console.ReadLine());
                                }
                                break;
                            }
                            catch (Exception exc)
                            {
                                Console.WriteLine("Opción no válida");
                                continue;
                            }
                        }
                        if (subdecision != 0)
                            Resolve(exprChosen, process);
                        else
                            continue;
                    }
                }
                else
                    break;
            }
        }

        /// <summary>
        /// Valida una expresión matemática
        /// </summary>
        /// <param name="expr">La expresión a evaluar</param>
        /// <returns>Verdadero si es válida la expresión, Falso de otro modo</returns>
        static bool Validate(String expr)
        {
            if (expr.Length == 0)
                return false;

            if (expr.Contains("R"))
                return false;

            Stack<char> parenthesis = new Stack<char>();
            for (int i = 0; i < expr.Length; i++)
            {
                if (expr[i] == '(')
                    parenthesis.Push('(');
                else if (expr[i] == ')')
                {
                    try
                    {
                        parenthesis.Pop();
                    }
                    catch (InvalidOperationException ioe)
                    {
                        return false;
                    }

                    if (i != (expr.Length - 1) && expr[i + 1] == '(')
                        return false;

                    if (i != 0 && expr[i - 1] == '(')
                        return false;
                }
                else if (expr[i] == '*' || expr[i] == '/' || expr[i] == '%')
                {
                    if (i == 0 || i == expr.Length - 1)
                        return false;
                    else if (expr[i + 1] == '+' || expr[i + 1] == '-')
                    {
                        if (expr.Length < 3)
                            return false;

                        if (IsOperator(expr[i + 2].ToString()) || expr[i + 2] == '+' || expr[i + 2] == '-')
                            return false;
                    }
                    else if (IsOperator(expr[i + 1].ToString()) || IsOperator(expr[i - 1].ToString()) || expr[i - 1] == '+' || expr[i - 1] == '-')
                        return false;
                }
            }

            if (parenthesis.Count == 0)
                return true;

            return false;
        }

        /// <summary>
        /// Organiza las operaciones en la cantidad de procesos elegidos por el usuario
        /// </summary>
        /// <param name="expr">La expresión a evaluar</param>
        /// /// <param name="process">La cantidad de procesos sobre los que correra</param>
        static void Resolve(String expr, int process)
        {
            List<String> postOrder = IntoPost(expr);
            List<R> relations = IdentifyOperations(postOrder);

            String[,] table = Organize(relations, process);

            Console.WriteLine();

            for (int i = 0; i < table.GetLength(1); i++)
                Console.Write("\tTiempo{0}:\t", i + 1);
            Console.WriteLine();

            for (int i = 0; i < table.GetLength(0); i++)
            {
                Console.Write("Proceso{0}:\t", i + 1);
                for (int j = 0; j < table.GetLength(1); j++)
                    Console.Write(table[i, j] + "\t");
                Console.WriteLine();
            }

            Console.WriteLine();
        }

        /// <summary>
        /// Convierte una expresión en notación infija a notación postfija
        /// </summary>
        /// <param name="expr">La expresión a evaluar</param>
        /// <returns>Una lista de los elementos de la expresión en postorden</returns>
        static List<String> IntoPost(String expr)
        {
            List<String> inOrder = new List<String>();

            bool done = false;
            int begin = 0;

            for (int i = 0; i < expr.Length; i++)
            {
                if (!done)
                    begin = i;

                if (expr[i] == '(')
                    inOrder.Add(expr[i].ToString());
                else if (i == (expr.Length - 1) && expr[i] != ')')
                    inOrder.Add(expr.Substring(begin, (i + 1) - begin));
                else if (expr[i] == '*' || expr[i] == '/' || expr[i] == '%' || expr[i] == ')')
                {
                    if (expr[i - 1] != ')')
                        inOrder.Add(expr.Substring(begin, i - begin));
                    inOrder.Add(expr[i].ToString());
                    done = false;
                }
                else if (expr[i] == '+' || expr[i] == '-')
                {
                    if (i == 0 || expr[i - 1] == '(' || expr[i - 1] == '+' || expr[i - 1] == '-' || expr[i - 1] == '*' || expr[i - 1] == '/' || expr[i - 1] == '%')
                    {
                        begin = i;
                        done = true;
                    }
                    else
                    {
                        inOrder.Add(expr.Substring(begin, i - begin));
                        inOrder.Add(expr[i].ToString());
                        done = false;
                    }
                }
                else if (!done)
                {
                    begin = i;
                    done = true;
                }
            }

            inOrder.RemoveAll(RemoveEmpty);

            List<String> postOrder = new List<String>();
            Stack<String> helpStack = new Stack<String>();

            while (inOrder.Count != 0)
            {
                String elem = inOrder[0];
                inOrder.RemoveAt(0);
                if (elem == "(")
                    helpStack.Push(elem);
                else if (elem == ")")
                {
                    while (helpStack.Count != 0 && helpStack.Peek() != "(")
                        postOrder.Add(helpStack.Pop());
                    if (helpStack.Count != 0 && helpStack.Peek() == "(")
                        helpStack.Pop();
                }
                else if (elem == "+" || elem == "-" || elem == "*" || elem == "/" || elem == "%")
                {
                    while (helpStack.Count != 0 && ((!IsOperator(elem) && elem != "+" && elem != "-") || Priority(helpStack.Peek()[0]) >= Priority(elem[0])))
                        postOrder.Add(helpStack.Pop());
                    helpStack.Push(elem);
                }
                else
                    postOrder.Add(elem);
            }

            while (helpStack.Count != 0)
                postOrder.Add(helpStack.Pop());

            return postOrder;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲尤物视频在线| 久久精品人人做人人爽97| 亚洲综合免费观看高清完整版| 99麻豆久久久国产精品免费优播| 欧美国产激情二区三区| 国产.欧美.日韩| 国产精品蜜臀av| 91久久久免费一区二区| 亚洲国产精品综合小说图片区| 欧美视频在线一区二区三区| 丝袜美腿亚洲一区二区图片| 日韩色视频在线观看| 韩国毛片一区二区三区| 亚洲国产精品av| 在线观看欧美精品| 奇米777欧美一区二区| 久久久久久久久岛国免费| a亚洲天堂av| 亚洲成人免费电影| 精品国产乱码久久久久久蜜臀| 国产成人在线免费观看| 一区二区免费视频| 日韩免费观看2025年上映的电影 | 国模少妇一区二区三区| 欧美国产成人精品| 久久嫩草精品久久久精品| 国产成人av一区二区三区在线 | 亚洲福利一区二区三区| 精品入口麻豆88视频| kk眼镜猥琐国模调教系列一区二区| 亚洲综合丝袜美腿| 欧美不卡激情三级在线观看| 福利一区二区在线观看| 亚洲午夜久久久久久久久久久| 欧美成人精品高清在线播放| a在线播放不卡| 久久激五月天综合精品| 又紧又大又爽精品一区二区| 欧美mv和日韩mv国产网站| av在线这里只有精品| 日日摸夜夜添夜夜添国产精品 | 91成人国产精品| 国产精品一区二区免费不卡| 亚洲国产成人va在线观看天堂| 精品国产伦一区二区三区观看方式| 91捆绑美女网站| 久久er精品视频| 亚洲一区二区高清| 中文字幕中文在线不卡住| 日韩亚洲欧美一区| 色婷婷一区二区| 国产一区二区三区观看| 午夜精品久久久久久久99樱桃| 中文字幕欧美日韩一区| 欧美精品一区二区三区很污很色的| 色综合久久六月婷婷中文字幕| 国产精品自产自拍| 婷婷综合久久一区二区三区| 亚洲日本一区二区| 国产三级欧美三级日产三级99| 7777精品久久久大香线蕉| 91丝袜美腿高跟国产极品老师 | 欧美大片在线观看一区二区| 欧美亚洲图片小说| www.成人在线| 国产成人av影院| 国产精品综合一区二区| 男人的天堂亚洲一区| 视频一区免费在线观看| 亚洲国产精品一区二区www在线| 国产精品久久久久久久久免费桃花| 精品国产免费视频| 日韩免费一区二区| 91精品国产一区二区三区香蕉| 欧美在线一二三| 在线观看网站黄不卡| 91麻豆成人久久精品二区三区| 国产ts人妖一区二区| 国产99久久久国产精品| 国产一区二区在线观看免费| 久国产精品韩国三级视频| 免费观看日韩av| 老司机精品视频在线| 黄页视频在线91| 激情深爱一区二区| 国产精品一区二区三区乱码| 国产电影一区二区三区| 国产精品99久久久久久似苏梦涵 | 亚洲老妇xxxxxx| 亚洲女爱视频在线| 一区二区三区日韩精品| 亚洲精品久久嫩草网站秘色| 亚洲免费在线观看| 亚洲一区二区五区| 青椒成人免费视频| 久久99精品国产91久久来源| 激情图区综合网| 成人高清视频在线| 色综合色综合色综合| 欧美影院午夜播放| 3d动漫精品啪啪| 久久香蕉国产线看观看99| 国产精品久久久一本精品| 亚洲素人一区二区| 亚洲丶国产丶欧美一区二区三区| 丝袜美腿亚洲色图| 国产精品中文有码| 在线一区二区视频| 欧美电影免费提供在线观看| 亚洲国产精品av| 亚洲午夜av在线| 九一九一国产精品| heyzo一本久久综合| 欧美三级视频在线播放| 日韩欧美的一区| 亚洲欧洲色图综合| 亚洲成人动漫av| 国内精品自线一区二区三区视频| 成人aa视频在线观看| 欧美日韩亚洲丝袜制服| 久久久精品蜜桃| 一区二区日韩av| 国产一区二区三区在线看麻豆| 色综合久久中文字幕综合网| 欧美一卡在线观看| 欧美极品美女视频| 久久综合精品国产一区二区三区 | 毛片av一区二区三区| 成人黄色777网| 欧美色偷偷大香| 欧美大片一区二区三区| 国产精品丝袜在线| 亚洲女子a中天字幕| 国产一区视频导航| 色婷婷亚洲综合| 精品国产露脸精彩对白| 最新欧美精品一区二区三区| 亚洲成人综合在线| 99麻豆久久久国产精品免费优播| 在线播放一区二区三区| 国产亚洲短视频| 一区二区在线观看视频| 日韩高清中文字幕一区| 91年精品国产| 久久人人爽爽爽人久久久| 最新国产の精品合集bt伙计| 蜜桃91丨九色丨蝌蚪91桃色| 色婷婷精品大在线视频| 久久综合色天天久久综合图片| 亚洲男人的天堂一区二区| 久久99国内精品| 欧美亚洲高清一区| 18成人在线视频| 久久99国产精品免费| 欧美午夜精品电影| 亚洲欧洲99久久| 麻豆国产欧美日韩综合精品二区| 欧美在线一二三| 国产精品国产自产拍在线| 国内久久精品视频| 欧美一区二区三区视频免费播放| 亚洲午夜精品在线| 91香蕉国产在线观看软件| 久久久美女毛片| 日产国产欧美视频一区精品| 国产成人精品免费一区二区| 亚洲精品一区二区三区精华液| 亚洲va韩国va欧美va| 色综合天天做天天爱| 国产免费观看久久| 精品一区二区国语对白| 日韩一区二区三区四区五区六区| 亚洲一区二区高清| 91国模大尺度私拍在线视频| 欧美激情一区二区三区不卡| 精品综合久久久久久8888| 91精品国产综合久久久久久漫画 | 一区二区欧美国产| 99精品国产99久久久久久白柏| 欧美极品aⅴ影院| 国产91高潮流白浆在线麻豆| 精品欧美一区二区三区精品久久| 日韩精品乱码免费| 91久久精品一区二区三| 中文字幕日韩一区| 99久久精品国产毛片| 中文在线资源观看网站视频免费不卡 | 久久99这里只有精品| 日韩欧美一卡二卡| 蜜臀a∨国产成人精品| 91精品婷婷国产综合久久竹菊| 亚洲gay无套男同| 精品视频色一区| 蜜臀a∨国产成人精品| 精品三级在线看| 国产福利91精品一区| 国产欧美va欧美不卡在线| 色综合亚洲欧洲| 偷拍日韩校园综合在线| 欧美一卡二卡三卡|