コード例 #1
0
 public int EvaluateInput(string input, Constant constant)
 {
     Parser parse = new Parser();
     Add add_input = new Add();
     Subtract subtract_input = new Subtract();
     Multiply multiply_input = new Multiply();
     Divide divide_input = new Divide();
     Modulo modulo_input = new Modulo();
     if (parse.GetOperator(input) == '+')
     {
         return add_input.AddConstants(input, constant);
     }
     if (parse.GetOperator(input) == '-')
     {
         return subtract_input.SubtractConstants(input, constant);
     }
     if (parse.GetOperator(input) == '*')
     {
         return multiply_input.MultiplyConstants(input, constant);
     }
     if (parse.GetOperator(input) == '/')
     {
         return divide_input.DivideConstants(input, constant);
     }
     if (parse.GetOperator(input) == '%')
     {
         return modulo_input.ModuloConstants(input, constant);
     }
     throw new FormatException();
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: tannert44/SimpleCalculator
        static void Main(string[] args)
        {
            int count = 0;
            Parser parse = new Parser();
            Constant constant = new Constant();
            Evaluate evaluate_input = new Evaluate();
            Char result1;
            Char result2;
            int result3;
            int result4;

            while (true)
            {
                Console.Write("[{0}]", count);
                string input = Console.ReadLine();
                if (input.ToLower() == "exit" || input.ToLower() == "quit")
                {
                    break;
                }
                bool testIfFirstIsChar = Char.TryParse(parse.GetFirst(input), out result1);
                bool testIfSecondIsChar = Char.TryParse(parse.GetSecond(input), out result2);
                bool testIfFirstIsNum = int.TryParse(parse.GetFirst(input), out result3);
                bool testIfSecondIsNum = int.TryParse(parse.GetSecond(input), out result4);
                if (input.Length == 1)
                {
                    Console.WriteLine(" = {0} is {1}", input, constant.GetConstant(char.Parse(input)));
                }
                else if (testIfFirstIsChar && !testIfFirstIsNum && parse.GetOperator(input) == '=')
                {
                    constant.AddConstant(result1, result4);
                    Console.WriteLine("= '{0}' is '{1}' ", result1, result4);
                }
                else if (testIfFirstIsChar && !testIfFirstIsNum && testIfSecondIsNum || testIfSecondIsChar && !testIfSecondIsNum && testIfFirstIsNum || !testIfFirstIsNum && !testIfSecondIsNum)
                {
                    Console.WriteLine("= {0}", evaluate_input.EvaluateInput(input, constant));
                }
                else if (testIfFirstIsNum && testIfSecondIsNum)
                {
                    Console.WriteLine("= {0}", evaluate_input.EvaluateInput(input));
                }
                count++;
            }
        }
コード例 #3
0
 public void ParserEnsureGetOperatorWorksWithoutSpaces()
 {
     string input = "2+2";
     Parser parse = new Parser();
     Assert.AreEqual('+', parse.GetOperator(input));
 }
コード例 #4
0
 public void ParserEnsureGetOperatorWorksWithNegativeIntegersSpaces()
 {
     string input = "-2 + 2";
     Parser parse = new Parser();
     Assert.AreEqual('+', parse.GetOperator(input));
 }