예제 #1
0
        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);
        }
예제 #2
0
/*        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
        }
예제 #3
0
 public Form1()
 {
     InitializeComponent();
     calc = new Calculate();
 }
예제 #4
0
 protected void Page_Load(object sender, EventArgs e)
 {
     _Calculate = new Calculate();
 }
예제 #5
0
        // 계산기
        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;
            }
        }