|
@@ -110,140 +110,152 @@ namespace numbersystem
|
|
// при нажатии на знаки операций
|
|
// при нажатии на знаки операций
|
|
if(e.Text == "+" || e.Text == "-" || e.Text == "/" || e.Text == "*" || e.Text == "%")
|
|
if(e.Text == "+" || e.Text == "-" || e.Text == "/" || e.Text == "*" || e.Text == "%")
|
|
{
|
|
{
|
|
- str.Text += " ";
|
|
|
|
- str.Text += e.Text;
|
|
|
|
- str.Text += " ";
|
|
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " ";
|
|
|
|
+ str.Text += e.Text;
|
|
|
|
+ str.Text += " ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// при нажатии на "равно"
|
|
// при нажатии на "равно"
|
|
if(e.Text == "=")
|
|
if(e.Text == "=")
|
|
{
|
|
{
|
|
- if(ss == 0)
|
|
|
|
|
|
+ if (str.Text != "")
|
|
{
|
|
{
|
|
- MessageBox.Show("Не выбрана система счисления");
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // записываем выражение в переменную
|
|
|
|
- expression = str.Text;
|
|
|
|
-
|
|
|
|
- // разбиваем строку на массив
|
|
|
|
- string[] arr = expression.Split(' ');
|
|
|
|
-
|
|
|
|
- try
|
|
|
|
- {
|
|
|
|
- // перебираем массив и считаем высокоприоритетные операции
|
|
|
|
- for (int i = 0; i < arr.Length; i++)
|
|
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
{
|
|
{
|
|
- // умножение
|
|
|
|
- if (arr[i] == "*")
|
|
|
|
|
|
+ if (ss == 0)
|
|
{
|
|
{
|
|
- if (arr[i - 1] == "_")
|
|
|
|
- {
|
|
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 2] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 1] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
- }
|
|
|
|
|
|
+ MessageBox.Show("Не выбрана система счисления");
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
- // деление
|
|
|
|
- else if (arr[i] == "/")
|
|
|
|
|
|
+
|
|
|
|
+ // записываем выражение в переменную
|
|
|
|
+ expression = str.Text;
|
|
|
|
+
|
|
|
|
+ // разбиваем строку на массив
|
|
|
|
+ string[] arr = expression.Split(' ');
|
|
|
|
+
|
|
|
|
+ try
|
|
{
|
|
{
|
|
- if (arr[i - 1] == "_")
|
|
|
|
|
|
+ // перебираем массив и считаем высокоприоритетные операции
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
{
|
|
{
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 2] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
|
|
+ // умножение
|
|
|
|
+ if (arr[i] == "*")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // деление
|
|
|
|
+ else if (arr[i] == "/")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // остаток от деления
|
|
|
|
+ else if (arr[i] == "%")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- else
|
|
|
|
- {
|
|
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 1] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // остаток от деления
|
|
|
|
- else if (arr[i] == "%")
|
|
|
|
- {
|
|
|
|
- if (arr[i - 1] == "_")
|
|
|
|
|
|
+
|
|
|
|
+ // узнаем размер будущего массива
|
|
|
|
+ int l = 0;
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
{
|
|
{
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 2] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
|
|
+ if (arr[i] != "_")
|
|
|
|
+ {
|
|
|
|
+ l++;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+
|
|
|
|
+ // записать в новый массив результат предыдущего шага
|
|
|
|
+ string[] arr2 = new string[l];
|
|
|
|
+ int j = 0;
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
{
|
|
{
|
|
- arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
- arr[i - 1] = "_";
|
|
|
|
- arr[i + 1] = "_";
|
|
|
|
|
|
+ if (arr[i] != "_")
|
|
|
|
+ {
|
|
|
|
+ arr2[j] = arr[i];
|
|
|
|
+ j++;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
- // узнаем размер будущего массива
|
|
|
|
- int l = 0;
|
|
|
|
- for (int i = 0; i < arr.Length; i++)
|
|
|
|
- {
|
|
|
|
- if (arr[i] != "_")
|
|
|
|
- {
|
|
|
|
- l++;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // первое число массива присваиваем переменной
|
|
|
|
+ res = Convert.ToInt32(arr2[0], ss);
|
|
|
|
|
|
- // записать в новый массив результат предыдущего шага
|
|
|
|
- string[] arr2 = new string[l];
|
|
|
|
- int j = 0;
|
|
|
|
- for (int i = 0; i < arr.Length; i++)
|
|
|
|
- {
|
|
|
|
- if (arr[i] != "_")
|
|
|
|
- {
|
|
|
|
- arr2[j] = arr[i];
|
|
|
|
- j++;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // перебираем массив и считаем остальные операции
|
|
|
|
+ for (int i = 1; i < arr2.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ // сложение
|
|
|
|
+ if (arr2[i] == "+")
|
|
|
|
+ {
|
|
|
|
+ res += Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
+ }
|
|
|
|
+ // вычитание
|
|
|
|
+ else if (arr2[i] == "-")
|
|
|
|
+ {
|
|
|
|
+ res -= Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- // первое число массива присваиваем переменной
|
|
|
|
- res = Convert.ToInt32(arr2[0], ss);
|
|
|
|
|
|
+ // выводим результат
|
|
|
|
+ str.Text = Convert.ToString(res, ss);
|
|
|
|
|
|
- // перебираем массив и считаем остальные операции
|
|
|
|
- for (int i = 1; i < arr2.Length; i++)
|
|
|
|
- {
|
|
|
|
- // сложение
|
|
|
|
- if (arr2[i] == "+")
|
|
|
|
- {
|
|
|
|
- res += Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
|
|
+ // добавляем вычисление в бд
|
|
|
|
+ history record = new history()
|
|
|
|
+ {
|
|
|
|
+ inquiry = expression,
|
|
|
|
+ result = Convert.ToString(res, ss),
|
|
|
|
+ notation = Convert.ToString(ss)
|
|
|
|
+ };
|
|
|
|
+ _context.history.Add(record);
|
|
|
|
+ _context.SaveChanges();
|
|
|
|
+ Load();
|
|
|
|
+ Diagram();
|
|
|
|
+ dia.Series = SeriesCollection;
|
|
}
|
|
}
|
|
- // вычитание
|
|
|
|
- else if (arr2[i] == "-")
|
|
|
|
|
|
+ catch (Exception ex)
|
|
{
|
|
{
|
|
- res -= Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
|
|
+ MessageBox.Show(ex.ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- // выводим результат
|
|
|
|
- str.Text = Convert.ToString(res, ss);
|
|
|
|
-
|
|
|
|
- // добавляем вычисление в бд
|
|
|
|
- history record = new history()
|
|
|
|
- {
|
|
|
|
- inquiry = expression,
|
|
|
|
- result = Convert.ToString(res, ss),
|
|
|
|
- notation = Convert.ToString(ss)
|
|
|
|
- };
|
|
|
|
- _context.history.Add(record);
|
|
|
|
- _context.SaveChanges();
|
|
|
|
- Load();
|
|
|
|
- Diagram();
|
|
|
|
- dia.Series = SeriesCollection;
|
|
|
|
- }
|
|
|
|
- catch (Exception ex)
|
|
|
|
- {
|
|
|
|
- MessageBox.Show(ex.ToString());
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -271,5 +283,323 @@ namespace numbersystem
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // при нажатии на кнопки
|
|
|
|
+ private void ca_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text = "";
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void zero_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '0';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void erase_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text.Length > 0)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] == ' ') //если последний символ это знак операции
|
|
|
|
+ {
|
|
|
|
+ for (int i = 0; i < 3; i++)
|
|
|
|
+ str.Text = str.Text.Substring(0, str.Text.Length - 1);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ str.Text = str.Text.Substring(0, str.Text.Length - 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void one_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '1';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void two_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '2';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void three_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '3';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void four_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '4';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void five_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '5';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void six_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '6';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void seven_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '7';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void eight_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '8';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void nine_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += '9';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void a_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'a';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void b_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'b';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void c_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'c';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void d_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'd';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void e_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'e';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void f_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ str.Text += 'f';
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void plus_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " + ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void minus_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " - ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void multiply_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " * ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void division_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " / ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void remains_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ str.Text += " % ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void equal_Click(object sender, RoutedEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ if (str.Text != "")
|
|
|
|
+ {
|
|
|
|
+ if (str.Text[str.Text.Length - 1] != ' ')
|
|
|
|
+ {
|
|
|
|
+ if (ss == 0)
|
|
|
|
+ {
|
|
|
|
+ MessageBox.Show("Не выбрана система счисления");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // записываем выражение в переменную
|
|
|
|
+ expression = str.Text;
|
|
|
|
+
|
|
|
|
+ // разбиваем строку на массив
|
|
|
|
+ string[] arr = expression.Split(' ');
|
|
|
|
+
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ // перебираем массив и считаем высокоприоритетные операции
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ // умножение
|
|
|
|
+ if (arr[i] == "*")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) * Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // деление
|
|
|
|
+ else if (arr[i] == "/")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) / Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // остаток от деления
|
|
|
|
+ else if (arr[i] == "%")
|
|
|
|
+ {
|
|
|
|
+ if (arr[i - 1] == "_")
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 2], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 2] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ arr[i] = Convert.ToString(Convert.ToInt32(arr[i - 1], ss) % Convert.ToInt32(arr[i + 1], ss), ss);
|
|
|
|
+ arr[i - 1] = "_";
|
|
|
|
+ arr[i + 1] = "_";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // узнаем размер будущего массива
|
|
|
|
+ int l = 0;
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ if (arr[i] != "_")
|
|
|
|
+ {
|
|
|
|
+ l++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // записать в новый массив результат предыдущего шага
|
|
|
|
+ string[] arr2 = new string[l];
|
|
|
|
+ int j = 0;
|
|
|
|
+ for (int i = 0; i < arr.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ if (arr[i] != "_")
|
|
|
|
+ {
|
|
|
|
+ arr2[j] = arr[i];
|
|
|
|
+ j++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // первое число массива присваиваем переменной
|
|
|
|
+ res = Convert.ToInt32(arr2[0], ss);
|
|
|
|
+
|
|
|
|
+ // перебираем массив и считаем остальные операции
|
|
|
|
+ for (int i = 1; i < arr2.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ // сложение
|
|
|
|
+ if (arr2[i] == "+")
|
|
|
|
+ {
|
|
|
|
+ res += Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
+ }
|
|
|
|
+ // вычитание
|
|
|
|
+ else if (arr2[i] == "-")
|
|
|
|
+ {
|
|
|
|
+ res -= Convert.ToInt32(arr2[i + 1], ss);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // выводим результат
|
|
|
|
+ str.Text = Convert.ToString(res, ss);
|
|
|
|
+
|
|
|
|
+ // добавляем вычисление в бд
|
|
|
|
+ history record = new history()
|
|
|
|
+ {
|
|
|
|
+ inquiry = expression,
|
|
|
|
+ result = Convert.ToString(res, ss),
|
|
|
|
+ notation = Convert.ToString(ss)
|
|
|
|
+ };
|
|
|
|
+ _context.history.Add(record);
|
|
|
|
+ _context.SaveChanges();
|
|
|
|
+ Load();
|
|
|
|
+ Diagram();
|
|
|
|
+ dia.Series = SeriesCollection;
|
|
|
|
+ }
|
|
|
|
+ catch (Exception ex)
|
|
|
|
+ {
|
|
|
|
+ MessageBox.Show(ex.ToString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ str.Focus();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|