.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();
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д