.NET 4.x Подставка значений в формулу - C#

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

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

Есть программа. В неё вводится два значения (допустим A и B), так же вводится формула (допустим 2x+x+3). Как сделать так, чтобы значение A подставилось вместо первого x, а B вместо второго x и посчиталось?

Решение задачи: «.NET 4.x Подставка значений в формулу»

textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
 
class Program
{
    private static readonly Dictionary<string, Action<Stack<double>>> w =
    new Dictionary<string, Action<Stack<double>>>(StringComparer.OrdinalIgnoreCase)
    {
        { "+", s => { s.Push(s.Pop() + s.Pop()); } },
        { "-", s => { double b = s.Pop(); s.Push(s.Pop() - b); } },
        { "*", s => { s.Push(s.Pop() * s.Pop()); } },
        { "/", s => { double b = s.Pop(); s.Push(s.Pop() / b); } },
        { "DUP", s => { s.Push(s.Peek()); } },
        { "SQRT", s => { s.Push(Math.Sqrt(s.Pop())); } },
        { "SWAP", s => { double b = s.Pop(); double a = s.Pop(); s.Push(b); s.Push(a); } },
        { ".", s=> { Console.WriteLine(s.Pop()); } }
    };
 
    public static void Main()
    {
        string input;
        while ((input = Console.ReadLine()) != String.Empty)
        {
            Stack<double> s = new Stack<double>();
            Dictionary<string, double> v = new Dictionary<string, double>();
            Action<Stack<double>> f;
            double n;
            foreach (string i in input.Split())
            {
                if (w.TryGetValue(i, out f))
                {
                    f(s);
                }
                else if (v.TryGetValue(i, out n) || Double.TryParse(i, out n))
                {
                    s.Push(n);
                }
                else
                {
                    v[i] = s.Pop();
                }
            }
        }
    }
}

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


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

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

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