예제 #1
0
 public void Check()
 {
     Assert.Equal(new List <string>()
     {
         "1", "1", "+", "1", "-"
     }, ReversePolishNotation.Parse("1+1-1"));
 }
예제 #2
0
        private void Calculate_button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
                customCulture.NumberFormat.NumberDecimalSeparator = ".";

                System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

                double result = 0.0;
                var    rpn    = new ReversePolishNotation();
                rpn.Parse(Expression_textBox.Text.Replace(',', '.'));
                result = rpn.Evaluate();

                var output = new StringBuilder();

                output.AppendFormat("Original:   {0}", rpn.OriginalExpression + Environment.NewLine);
                output.AppendFormat("Transition: {0}", rpn.TransitionExpression + Environment.NewLine);
                output.AppendFormat("Postfix:    {0}", rpn.PostfixExpression + Environment.NewLine);
                output.AppendFormat("Result:     {0}", result);

                Results_textBox.Text = output.ToString();
            }
            catch (Exception ex)
            {
                Results_textBox.Text = ex.Message;
            }
        }
예제 #3
0
        static void Main()
        {
            Console.Write("Введите диапазон значений x по образцу (0 10): ");
            double[] rangeX = ReadInput();
            Console.Write("Введите шаг построения функции: ");
            double[]      step          = ReadInput();
            string        path          = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
            string        inputFile     = @"\input.txt";
            string        outputFile    = @"\output.txt";
            WorkWithFiles workWithFiles = new WorkWithFiles();

            if (!File.Exists(path + inputFile))
            {
                workWithFiles.WriteTextToFile(path, inputFile, "log(15^x^x - 25,5 + 5! * 43 - (7 * 5)) * cos(5) - 1");
            }
            ReversePolishNotation reversePolishNotation = new ReversePolishNotation();
            List <string>         textExpression        = workWithFiles.ReadTextFromFile(path, inputFile);
            List <object>         parseExpression       = reversePolishNotation.Parse(textExpression);

            foreach (var item in parseExpression)
            {
                Console.WriteLine(item);
            }
            ;
            TableOfFunctionValues tableOfFunctionValues = new TableOfFunctionValues();
            string finalText = tableOfFunctionValues.CreatingTable(rangeX, step[1], parseExpression);

            workWithFiles.WriteTextToFile(path, outputFile, finalText);
        }
예제 #4
0
    public static void Main(string[] args)
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

        double result             = 0.0;
        ReversePolishNotation rpn = new ReversePolishNotation();

        // rpn.Parse("pow(2, 3.14) * (3 - (3 * sqrt(2) - 3.2) + 1.5*0.3)");
        rpn.Parse("(3+5.3) * 2.7 - ln(22) / pow(2.2, -1.7)");
        result = rpn.Evaluate();
        Console.WriteLine("orig:   {0}", rpn.OriginalExpression);
        Console.WriteLine("tran:   {0}", rpn.TransitionExpression);
        Console.WriteLine("post:   {0}", rpn.PostfixExpression);
        Console.WriteLine("result: {0}", result);
    }
        static void Main(string[] args)
        {
            Console.Write("Enter an expression: ");
            string expression = Console.ReadLine();

            try
            {
                ReversePolishNotation rpn = new ReversePolishNotation();
                rpn.Parse(expression);
                Console.WriteLine("Result: {0}", rpn.Evaluate());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
예제 #6
0
 public void Check(string input, double expected)
 {
     Assert.Equal(expected, ReversePolishNotation.Calculate(ReversePolishNotation.Parse(input)));
 }