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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. class Program
  6. {
  7.     private static readonly Dictionary<string, Action<Stack<double>>> w =
  8.     new Dictionary<string, Action<Stack<double>>>(StringComparer.OrdinalIgnoreCase)
  9.     {
  10.         { "+", s => { s.Push(s.Pop() + s.Pop()); } },
  11.         { "-", s => { double b = s.Pop(); s.Push(s.Pop() - b); } },
  12.         { "*", s => { s.Push(s.Pop() * s.Pop()); } },
  13.         { "/", s => { double b = s.Pop(); s.Push(s.Pop() / b); } },
  14.         { "DUP", s => { s.Push(s.Peek()); } },
  15.         { "SQRT", s => { s.Push(Math.Sqrt(s.Pop())); } },
  16.         { "SWAP", s => { double b = s.Pop(); double a = s.Pop(); s.Push(b); s.Push(a); } },
  17.         { ".", s=> { Console.WriteLine(s.Pop()); } }
  18.     };
  19.  
  20.     public static void Main()
  21.     {
  22.         string input;
  23.         while ((input = Console.ReadLine()) != String.Empty)
  24.         {
  25.             Stack<double> s = new Stack<double>();
  26.             Dictionary<string, double> v = new Dictionary<string, double>();
  27.             Action<Stack<double>> f;
  28.             double n;
  29.             foreach (string i in input.Split())
  30.             {
  31.                 if (w.TryGetValue(i, out f))
  32.                 {
  33.                     f(s);
  34.                 }
  35.                 else if (v.TryGetValue(i, out n) || Double.TryParse(i, out n))
  36.                 {
  37.                     s.Push(n);
  38.                 }
  39.                 else
  40.                 {
  41.                     v[i] = s.Pop();
  42.                 }
  43.             }
  44.         }
  45.     }
  46. }

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы