Вычисление функции - C# (177775)

Узнай цену своей работы

Формулировка задачи:

Задача состоит в следующем: необходимо написать кода для вычисления значения x. Пример x=(4+2+3)*2+4/2-2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace test2
{
    class Program
    {
 
        static void Main(string[] args)
        {
 
            string str = "( 4 + 2 + 3 ) * 2 + 4 / 2 - 2";
            // string[] allowed = new string[] { "+", "-", "*", "/", "(", ")" };
 
            string[] exp = str.Split(' ');
            Queue<string> ops = new Queue<string>();
            Queue<double> vals = new Queue<double>();
            Queue<string> opsinbr = new Queue<string>();
            Queue<double> valsinbr = new Queue<double>();
            int opout = 0;
            int opinbr = 0;
            bool inbr = false;
            
            for (int i = 0; i < exp.Length; i++)
            {
 
            String s = exp[i];
 
                if (s.Equals("("))
                {
                    inbr = true;                     
                }
                else if (s.Equals("+") || s.Equals("*") || s.Equals("/") || s.Equals("-"))
                {
                    if (inbr)
                    {
                        opinbr++;
                        opsinbr.Enqueue(s);
                    }
                    else
                    {
                        opout++;
                        ops.Enqueue(s);
                    }
                }
                else if (s.Equals(")"))
                {
                        for (int l = 0; l < opinbr; l++)
                        {
                            GetComput(opsinbr, valsinbr);
                        }
                        opinbr = 0;
                    Console.WriteLine(valsinbr.Dequeue());
                }
                else
                {
                    if (inbr)
                    {
                        valsinbr.Enqueue(Convert.ToDouble(s));
                    }
                    else
                    {
                        vals.Enqueue(Convert.ToDouble(s));
                    }
                }
            }
            Console.WriteLine(vals.Dequeue());
            Console.WriteLine(opout);
            Console.WriteLine(opinbr);
            Console.ReadKey();
        }

        private static void GetComput(Queue<string> opsinbr, Queue<double> valsinbr)
        {
            String opinbr = opsinbr.Dequeue();
            if (opinbr.Equals("+"))
            {
                valsinbr.Enqueue(valsinbr.Dequeue() + valsinbr.Dequeue());
            }
            else if (opinbr.Equals("*"))
            {
                valsinbr.Enqueue(valsinbr.Dequeue() * valsinbr.Dequeue());
            }
            else if (opinbr.Equals("/"))
            {
                valsinbr.Enqueue(valsinbr.Dequeue() / valsinbr.Dequeue());
            }
            else if (opinbr.Equals("-"))
            {
                valsinbr.Enqueue(valsinbr.Dequeue() - valsinbr.Dequeue());
            }
        }
        private static void GetComp(Queue<string> ops, Queue<double> vals)
        {
            String op = ops.Dequeue();
            if (op.Equals("+"))
            {
                vals.Enqueue(vals.Dequeue() + vals.Dequeue());
            }
            else if (op.Equals("*"))
            {
                vals.Enqueue(vals.Dequeue() * vals.Dequeue());
            }
            else if (op.Equals("/"))
            {
                vals.Enqueue(vals.Dequeue() / vals.Dequeue());
            }
            else if (op.Equals("-"))
            {
                vals.Enqueue(vals.Dequeue() - vals.Dequeue());
            }
        }
    }
}
написал код, но где-то ошибка есть, не могу понять, где именно. Need help

Решение задачи: «Вычисление функции»

textual
Листинг программы
var result = Convert.ToDouble(new DataTable().Compute("( 4 + 2 + 3 ) * 2 + 4 / 2 - 2", null));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы