|
@@ -284,6 +284,128 @@ namespace numbersystem
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // для теста
|
|
|
+ public string TestNS(int ss, string inquiry)
|
|
|
+ {
|
|
|
+ string result = "";
|
|
|
+ if (inquiry != "")
|
|
|
+ {
|
|
|
+ if (inquiry[inquiry.Length - 1] != ' ')
|
|
|
+ {
|
|
|
+ if (ss == 0)
|
|
|
+ {
|
|
|
+ MessageBox.Show("Не выбрана система счисления");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // записываем выражение в переменную
|
|
|
+ expression = inquiry;
|
|
|
+
|
|
|
+ // разбиваем строку на массив
|
|
|
+ string[] arr = expression.Split(' ');
|
|
|
+
|
|
|
+ // перебираем массив и считаем высокоприоритетные операции
|
|
|
+ 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++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // первое число массива присваиваем переменной
|
|
|
+ int rest = Convert.ToInt32(arr2[0], ss);
|
|
|
+
|
|
|
+ // перебираем массив и считаем остальные операции
|
|
|
+ for (int i = 1; i < arr2.Length; i++)
|
|
|
+ {
|
|
|
+ // сложение
|
|
|
+ if (arr2[i] == "+")
|
|
|
+ {
|
|
|
+ rest += Convert.ToInt32(arr2[i + 1], ss);
|
|
|
+ }
|
|
|
+ // вычитание
|
|
|
+ else if (arr2[i] == "-")
|
|
|
+ {
|
|
|
+ rest -= Convert.ToInt32(arr2[i + 1], ss);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // выводим результат
|
|
|
+ result = Convert.ToString(rest, ss);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
// при нажатии на кнопки
|
|
|
private void ca_Click(object sender, RoutedEventArgs e)
|
|
|
{
|