Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- namespace Enigmanation
- {
- class Program
- {
- static void Main()
- {
- //Console.SetIn(new StreamReader(Console.OpenStandardInput(2800)));
- string input = Console.ReadLine();// "(1+9)%6-(7%2)*8=";
- char[] delimiters = new char[] { '(', ')', '=' };
- string[] arr = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
- int result = 0;
- string expression = "";
- for (int index = 0; index < arr.Length; index++)
- {
- if (arr[index].Length > 2 && getDigit(arr[index], 0) > 0 &&
- getDigit(arr[index], arr[index].Length - 1) > 0)
- {
- result = getResult(arr[index]);
- if (result < 0)
- {
- expression += result.ToString().Replace('-', '&');
- }
- else
- {
- expression += result.ToString();
- }
- }
- else
- {
- expression += arr[index];
- }
- }
- result = getResult(expression);
- Console.WriteLine("{0:F3}", result);
- }
- static int getResult(string str)
- {
- int num;
- if (int.TryParse(str, out num))
- {
- return int.Parse(str);
- }
- char[] operators = new char[] { '+', '-', '*', '%' };
- char[] digits = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&' };
- string[] numbers = str.Split(operators, StringSplitOptions.RemoveEmptyEntries);
- string[] oper = str.Split(digits, StringSplitOptions.RemoveEmptyEntries);
- if (numbers[0][0] == '&')
- {
- numbers[0] = numbers[0].Replace('&', '-');
- }
- int result = int.Parse(numbers[0]);
- for (int i = 0; i < numbers.Length - 1; i++)
- {
- int a = result;
- if (numbers[i + 1][0] == '&')
- {
- numbers[i + 1] = numbers[i + 1].Replace('&', '-');
- }
- int b = int.Parse(numbers[i + 1]);
- switch (oper[i])
- {
- case "+": result = a + b; break;
- case "-": result = a - b; break;
- case "*": result = a * b; break;
- case "%": result = a % b; break;
- }
- }
- return result;
- }
- static int getDigit(string str, int i)
- {
- int digit = 0;
- switch (str[i])
- {
- case '1': digit = 1; break;
- case '2': digit = 2; break;
- case '3': digit = 3; break;
- case '4': digit = 4; break;
- case '5': digit = 5; break;
- case '6': digit = 6; break;
- case '7': digit = 7; break;
- case '8': digit = 8; break;
- case '9': digit = 9; break;
- default: digit = -1; break;
- }
- return digit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement