Основы объектно-ориентированного программирования на языке C# book | Page 184

8 Вправи
3) Додати можливiсть обчислення арифметичних виразiв, що включають дiйснi числа та константи e та pi, наприклад,
( 1.0 + 2.5)* pi + e.
4) Додати можливiсть обчислення виразiв над дiйсними числами, що можуть включати арифметичнi операцiï та тригонометричнi функцiï sin, cos, tan, наприклад,
( 1.5 + sin( 2.0 + cos( 3.5)))* 3.
5) В класi Expression створити метод, який доволяє визначити змiнну( наприклад, x) та надати ïй цiле числове значення. Додати можливiсть обчислення арифметичних виразiв над цiлими числами, що включають як числа, так i змiннi, при умовi, що змiнним завчасно наданi цiлi числовi значення за допомогою зазначеного методу. Наприклад,( 2 + x / y)* 3 при умовi, що значення змiнних x та y завчасно визначенi за допомогою зазначеного методу.
6) Додати можливiсть обчислення булевих виразiв, що включають булевi константи( 0, 1), операцiï диз’ юнкцiï(\/), кон’ юнкцiï(/\), заперечення(!) та дужки, наприклад,( 0 \/(( 1))) /\ 1.
7) Написати обгрунтованi критичнi зауваження( при наявностi) щодо структури та / або алгоритму роботи програми та шляхи вдосконалення програми, якi Ви бачите.
using System; using System. Collections; using System. Collections. Generic; using System. Linq;
namespace Expressions
{ public abstract class Expression { public interface IInput: IEnumerator < char > { bool IsEmpty(); int Position { get; }
}
public class StringInput: IInput
{ private string s; private int position;
public int Position { get { return position; } }
public static explicit operator StringInput( string s) {
184