Вычисление формулы - C# (183517)
Формулировка задачи:
Кто может помочь написать программу, которая вычислит это выражение
Решение задачи: «Вычисление формулы»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- class ForthMachine
- {
- private Stack<double> s;
- public ForthMachine()
- {
- s = new Stack<double>();
- }
- public ForthMachine Push(double a)
- {
- s.Push(a);
- return this;
- }
- public ForthMachine Tan()
- {
- s.Push(Math.Tan(s.Pop()));
- return this;
- }
- public ForthMachine Swap()
- {
- double b = s.Pop();
- double a = s.Pop();
- s.Push(b);
- s.Push(a);
- return this;
- }
- public ForthMachine Plus()
- {
- s.Push(s.Pop() + s.Pop());
- return this;
- }
- public ForthMachine Abs()
- {
- s.Push(Math.Abs(s.Pop()));
- return this;
- }
- public ForthMachine Dup()
- {
- s.Push(s.Peek());
- return this;
- }
- public ForthMachine Sqrt()
- {
- s.Push(Math.Sqrt(s.Pop()));
- return this;
- }
- public ForthMachine Sin()
- {
- s.Push(Math.Sin(s.Pop()));
- return this;
- }
- public ForthMachine Pow()
- {
- double b = s.Pop();
- s.Push(Math.Pow(s.Pop(), b));
- return this;
- }
- public ForthMachine Div()
- {
- double b = s.Pop();
- s.Push(s.Pop() / b);
- return this;
- }
- public ForthMachine Mul()
- {
- s.Push(s.Pop() * s.Pop());
- return this;
- }
- public ForthMachine Dot()
- {
- Console.WriteLine(s.Pop());
- return this;
- }
- }
- class Program
- {
- public static void Main()
- {
- double a = 0.5;
- double b = 1.5;
- new ForthMachine().Push(a).Push(b)
- .Tan().Push(1).Swap().Div().Swap().Tan().Plus().Abs()
- .Dup().Sqrt().Swap().Dup().Sin().Swap()
- .Dup().Push(Math.E).Swap().Pow().Plus().Div().Mul().Dot();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д