static void Main(string[] args) { Console.WriteLine("Введите пример: "); string data = Console.ReadLine(); DataTable dataTable = new DataTable(); try { var value = dataTable.Compute(data, ""); } catch { Console.WriteLine("Пример введен с ошибкой"); Console.ReadKey(); Environment.Exit(0); } ReversePolishNotation notation = new ReversePolishNotation(data); Calculate calculate = new Calculate(notation.Output); }
/* class Factorial * { * public double display(double n) * { * double res = 1; * while (n != 1) * { * res = res * n; * n = n - 1; * } * return res; * } * }*/ public void button_Click(object sender, EventArgs e) { Button button = (Button)sender; Calculate?.Invoke(values, Convert.ToDouble(textBox1.Text), button.Text); string x = GetValues?.Invoke(); listBox1.Items.Add(x); #region /* switch (button.Text) * { * case "Прибавить": * * for (int i = 0; i < values.Length; i++) * { * values[i] = values[i] + Convert.ToDouble(textBox1.Text); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * s(button.Text); * break; * * case "Отнять": * * for (int i = 0; i < values.Length; i++) * { * values[i] = values[i] - Convert.ToDouble(textBox1.Text); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * break; * * case "Умножить": * * for (int i = 0; i < values.Length; i++) * { * values[i] = values[i] * Convert.ToDouble(textBox1.Text); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * break; * * case "Разделить": * if (textBox1.Text == "0") * MessageBox.Show("Деление на 0", "Ошибка"); * else * { * for (int i = 0; i < values.Length; i++) * { * values[i] = values[i] / Convert.ToDouble(textBox1.Text); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * } * break; * * case "Возвести в квадрат": * * for (int i = 0; i < values.Length; i++) * { * values[i] = Math.Pow(values[i], 2); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * break; * * case "Возвести в степень": * if (Convert.ToDouble(textBox1.Text) % 1 != 0) * MessageBox.Show("Степень не целое число", "Ошибка"); * else * { * for (int i = 0; i < values.Length; i++) * { * values[i] = Math.Pow(values[i], Convert.ToDouble(textBox1.Text)); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * } * break; * * case "Квадратный корень": * for (int i = 0; i < values.Length; i++) * { * if (values[i] < 0) * MessageBox.Show("Под корнем отрицательное число", "Ошибка"); * else * { * values[i] = Math.Sqrt(values[i]); * label1.Text = string.Join("; ", values); * } * } * listBox1.Items.Add(label1.Text); * break; * * case "Корень заданной степени": * if (Convert.ToDouble(textBox1.Text) % 1 != 0) * MessageBox.Show("Степень не целое число", "Ошибка"); * else * { * for (int i = 0; i < values.Length; i++) * { * if (values[i] < 0) * MessageBox.Show("Под корнем отрицательное число", "Ошибка"); * else * { * values[i] = Math.Pow(values[i], 1.0 / Convert.ToDouble(textBox1.Text)); * label1.Text = string.Join("; ", values); * } * } * listBox1.Items.Add(label1.Text); * } * break; * case "Логарифм по заданному основанию": * * for (int i = 0; i < values.Length; i++) * { * if (Convert.ToDouble(textBox1.Text) < 0 | values[i] < 0) * MessageBox.Show("Логарифм отрицательного числа", "Ошибка"); * else * { * values[i] = Math.Log(values[i]) / Math.Log(Convert.ToDouble(textBox1.Text)); * label1.Text = string.Join("; ", values); * } * } * listBox1.Items.Add(label1.Text); * break; * case "Факториал": * * for (int i = 0; i < values.Length; i++) * { * if (Convert.ToDouble(values[i]) % 1 != 0) * { * MessageBox.Show("Факториал не целого числа", "Ошибка"); * break; * } * else * { * Factorial fact = new Factorial(); * values[i] = fact.display(values[i]); * label1.Text = string.Join("; ", values); * } * listBox1.Items.Add(label1.Text); * } * break; * * case "Медиана": * * Array.Sort(values); * if (values.Length % 2 == 0) * { * double med = (values[values.Length / 2] + values[values.Length / 2 - 1]) / 2; * Array.Resize(ref values, 1); * values[0] = med; * } * else * { * double med = values[values.Length / 2]; * Array.Resize(ref values, 1); * values[0] = med; * } * label1.Text = string.Join("; ", values); * listBox1.Items.Add(label1.Text); * * break; * * case "Стандартное отклонение": * * double av = 0; * double t = 0; * foreach (double i in values) * av += i; * av = av / values.Length; * foreach (double i in values) * t += Math.Pow(i - av, 2); * t = t / values.Length; * Array.Resize(ref values, 1); * values[0] = Math.Sqrt(t); * * label1.Text = string.Join("; ", values); * listBox1.Items.Add(label1.Text); * * break; * default: * break; * }*/ #endregion }
public Form1() { InitializeComponent(); calc = new Calculate(); }
protected void Page_Load(object sender, EventArgs e) { _Calculate = new Calculate(); }
// 계산기 static void Calculator() { // Validation 체크 // 수식이 음수로 시작되면 listExpr 제일 앞에 0 입력 // 숫자와 +,-,*,-,= 을 제외한 문자 입력 방지 // 숫자 다음에 숫자, 연산자 다음에 연산자는 올수 없음 List <string> listExpr = new List <string>(); Console.Clear(); Console.Write("계산식: "); Validate val = new Validate(listExpr); val.Validatiton(); // 계산 결과 Console.Clear(); Console.Write("계산결과: "); string sExpr = ""; for (int i = 0; i < listExpr.Count; i++) { sExpr += Deco.AddComma(listExpr[i]); } Calculate calc = new Calculate(listExpr); // 수식 계산 값 sExpr += Deco.AddComma(calc.Calculation().ToString()); Console.WriteLine(sExpr); // 계산 날짜 추가 sExpr = "(" + DateTime.Now + ") " + sExpr; // 계산 내역 저장 History.AddHistory(sExpr); Console.WriteLine(); Console.WriteLine("메뉴를 선택하세요"); Console.WriteLine("1. 메인메뉴"); Console.WriteLine("2. 이전계산식 전체조회 "); Console.WriteLine("3. 계산기"); Console.WriteLine("4. 종료"); string inNum = Console.ReadLine(); switch (inNum) { case "1": MainMenu(); break; case "2": ShowHistory(); break; case "3": Calculator(); break; case "4": break; default: MainMenu(); break; } }