Программирование линейных алгоритмов - C# (183524)
Формулировка задачи:
Составить консольный и оконный приложение для вычисления и печати значений математических выражений. Значения переменных для подсчета ввести в диалоге с пользователем.
Решение задачи: «Программирование линейных алгоритмов»
textual
Листинг программы
using System; using System.Linq; using System.Collections.Generic; class ForthMachine { private Stack<double> s; private Stack<double> r; public ForthMachine(IEnumerable<double> init) { s = new Stack<double>(init); r = new Stack<double>(); } public ForthMachine Push(double a) { s.Push(a); return this; } public ForthMachine Drop() { s.Pop(); return this; } public ForthMachine Dup() { s.Push(s.Peek()); 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 Minus() { double a = s.Pop(); s.Push(s.Pop() - a); return this; } public ForthMachine Mul() { s.Push(s.Pop() * s.Pop()); return this; } public ForthMachine Div() { double a = s.Pop(); s.Push(s.Pop() / a); return this; } public ForthMachine Abs() { s.Push(Math.Abs(s.Pop())); return this; } public ForthMachine Sqr() { s.Push(s.Peek() * s.Pop()); return this; } public ForthMachine Pow() { double a = s.Pop(); s.Push(Math.Pow(s.Pop(), a)); return this; } public ForthMachine Sin() { s.Push(Math.Sin(s.Pop())); return this; } public ForthMachine Cos() { s.Push(Math.Cos(s.Pop())); return this; } public ForthMachine Atan() { s.Push(Math.Atan(s.Pop())); return this; } public ForthMachine ToR() { r.Push(s.Pop()); return this; } public ForthMachine FromR() { s.Push(r.Pop()); return this; } public ForthMachine AtR() { s.Push(r.Peek()); return this; } public ForthMachine Dot() { Console.WriteLine(s.Pop()); return this; } } class Program { public static void Main() { new ForthMachine(Console.ReadLine().Split().Select(Double.Parse)) .Swap().ToR().Swap().ToR().Dup().ToR().Push(1).Swap().Div().Atan().Cos().Sqr().FromR().FromR().Swap().FromR().Swap() .ToR().ToR().Dup().AtR().Abs().Pow().Swap().FromR().FromR() .ToR().ToR().Dup().AtR().Plus().Sin().Sqr().Push(1).Plus().Swap().FromR().FromR() .ToR().ToR().Dup().Dup().Sqr().AtR().Sqr().Mul().Push(1).Plus().AtR().Push(2).Mul().Swap().Div().Minus().Abs().Swap().FromR().FromR() .Drop().Drop().Drop().Div().Mul().Plus().Dot(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д