Скачать 77.81 Kb.
|
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace BaseCalculator { class CalcClass { /// /// Последнне сообщение об ошибке. /// И хороший пример для регрессионного тестирования! /// private static string _lastError = ""; public static string lastError { get { string temp = _lastError; _lastError = ""; return temp; } } public static double Sinus(double x) { return Math.Sin(x); } public static double Cosinus(double x) { return Math.Cos(x); } public static double Thangens(double x) { return Math.Tan(x); } public static double Cothangens(double x) { return 1 / Math.Tan(x); } public static double Exp(double x) { return Math.Exp(x); } public static double Power(double x, double y) { return Math.Pow(x, y); } /// /// Сложение /// /// слагаемое /// слагаемое /// public static int Add(long a, long b) { if (a <= int.MaxValue && b <= int.MaxValue && a >= int.MinValue && b >= int.MinValue && a + b >= int.MinValue && a + b <= int.MaxValue) { return Convert.ToInt32(a + b); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// вычитание /// /// уменьшаемое /// вычитаемое /// /// public static int Sub(long a, long b) { if (a <= int.MaxValue && b <= Convert.ToInt64(int.MaxValue) + 1 && a >= int.MinValue && b >= int.MinValue && a - b >= int.MinValue && a - b <= int.MaxValue) { return Convert.ToInt32(a) - Convert.ToInt32(b); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// умножение /// /// множитель /// множитель /// public static int Mult(long a, long b) { if (a <= int.MaxValue && b <= int.MaxValue && a >= int.MinValue && b >= int.MinValue && a * b >= int.MinValue && a * b <= int.MaxValue) { return Convert.ToInt32(a * b); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// частное /// /// делимое /// делитель /// public static int Div(long a, long b) { if (a <= int.MaxValue && b <= int.MaxValue && a >= int.MinValue && b >= int.MinValue) { if (b != 0) { long c; long res = Math.DivRem(a, b, out c); if (res >= int.MinValue && res <= int.MaxValue) { return Convert.ToInt32(res); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } else { _lastError = "Error 09"; MessageBox.Show("Ошибка деления на 0"); Program.res = 9; return 0; } } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// Деление по модулю /// /// делимое /// делитель /// public static int Mod(long a, long b) { if (a <= int.MaxValue && b <= int.MaxValue && a >= int.MinValue && b >= int.MinValue) { if (b != 0) { long c; Math.DivRem(a, b, out c); if (c >= int.MinValue && c <= int.MaxValue) { return Convert.ToInt32(c); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } else { _lastError = "Error 09"; MessageBox.Show("Ошибка деления на 0"); Program.res = 9; return 0; } } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// унарный плюс /// /// /// public static int ABS(long a) { if (a <= int.MaxValue && a >= int.MinValue && Math.Abs(a) <= int.MaxValue && Math.Abs(a) >= int.MinValue) { // легко сделать глюк return Convert.ToInt32(Math.Abs(a)); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } /// /// унарный минус /// /// /// /// /// 1 - неправильно поставлено условие, нет двух проверок на -a /// 3 - непарвильный порядок математических преобразований, которые неверно обрабатывают пример 0 - 2147483648 /// public static int IABS(long a) { if (a <= Convert.ToInt64(int.MaxValue) + 1 && a >= int.MinValue) { return -Convert.ToInt32(Math.Abs(a)); } else { _lastError = "Error 06"; MessageBox.Show("Слишком малое или слишком большое значение числа для int\n Числа должны быть в пределах от -2147483648 до 2147483647"); Program.res = 6; return 0; } } public static double Cube(double x) { return Math.Pow(x, 3.0); } public static double Square(double x) { return Math.Pow(x, 2.0); } public static double Lg(double x) { return Math.Log10(x); } public static double Ln(double x) { return Math.Log(x); } public static double Reciprocal(double x) { return 1 / x; } public static long Factor(int n) { long answ = 1; for (int i = 1; i <= n; i++) { answ *= i; } return answ; } public static double Pi { get { return Math.PI; } } public static double E { get { return Math.E; } } } } |
![]() | Показывает, есть ли необходимость в выводе сообщений об ошибках. В случае консольного запуска программы это значение false | ![]() | Внутренняя организация файловой системы: модель версии Fast File System (ffs) bsd 193 |
![]() | Статья составлена по документу Florian Buchholz “The structure of the Reiser file system”, по комментариям в исходных текстах reiserfs,... | ![]() | Статья составлена по документу Florian Buchholz “The structure of the Reiser file system”, по комментариям в исходных текстах reiserfs,... |
![]() | Результатом работ в фрг было создание системы gks. Модель графической системы, положенная в ее основу, приведена на рис | ![]() | Уже в 1958 г составители будущего учебного плана исходили из того, что выпускники отделения должны иметь глубокую подготовку как... |
![]() | Обучающая среда Moodle стала на сегодняшний день одной из наиболее популярных систем поддержки учебного процесса до (lms – learning... | ![]() | Эта шина предполагает равноправие устройств и в произвольный момент времени любое устройство, подключенное к шине, может либо быть... |
![]() | ... | ![]() | ... |