Запретить деление на 0 - C#
Формулировка задачи:
Как сделать чтобы во время деления на 0 выбивало: "на 0 делить нельзя"
сейчас 10/0= 10 почему так?
namespace Coursework { class Parser { public static double Eval(char[] expr) { return parseSummands(expr, 0); } private static double parseSummands(char[] expr, int index) { double x = parseFactors(expr, ref index); while (true) { char op = expr[index]; if (op != '+' && op != '-') return x; index++; double y = parseFactors(expr, ref index); if (op == '+') x += y; else x -= y; } } private static double parseFactors(char[] expr, ref int index) { double x = trigFunctions(expr, ref index); while (true) { char op = expr[index]; if (op != '/' && op != '*' && op != '^') return x; index++; double y = trigFunctions(expr, ref index); if (op == '/' && y != 0) x /= y; else if (op == '*') x *= y; else if (op == '^') x = Math.Pow(x, y); } } private static double trigFunctions (char[] expr, ref int index) { if (expr[index] >= 48 && expr[index] <= 57 || expr[index] == 46 || expr[index] == 45) return GetDouble(expr, ref index); else { char op = expr[index]; if (op != 'c' && op != 't' && op != 's') return GetDouble(expr, ref index); index += 4; double x = GetDouble(expr, ref index); if (index + 1 != expr.Length) index++; if (op == 'c') return Math.Cos(x); if (op == 't') return Math.Tan(x); else return Math.Sin(x); } } private static double GetDouble(char[] expr, ref int index) { string dbl = ""; while (((int)expr[index] >= 48 && (int)expr[index] <= 57 || (int)expr[index] == 46)) { dbl += expr[index].ToString(); index++; if (index == expr.Length) { index--; break; } } return double.Parse(dbl); } } }
Решение задачи: «Запретить деление на 0»
textual
Листинг программы
static void MagicDouble() { double a = 0.3, b = 0.1, c = 0.2; Console.WriteLine(a == (b + c)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д