Advertisement
striking

X Expression

Dec 7th, 2013
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.63 KB | None | 0 0
  1.  
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. class XExpression
  6. {
  7.     static void Main()
  8.     {
  9.         string expression = Console.ReadLine();
  10.         double numbersAdd = 0;
  11.         List<double> numbers = new List<double>();
  12.         List<double> numbersInBracket = new List<double>();
  13.         List<char> sign = new List<char>();
  14.         List<char> signInBracket = new List<char>();
  15.         List<int> brackets = new List<int>();
  16.         double sumToBrackets = 0;
  17.         double sumInBrackets = 0;
  18.         int brackeCounter = 0;
  19.  
  20.         for (int i = 0, p = 0; i < expression.Length; i++, p++)
  21.             {
  22.                 numbersAdd = (int)Char.GetNumericValue(expression[i]);
  23.                 if (numbersAdd == -1)
  24.                 {
  25.                     numbersAdd = (int)expression[i];
  26.                     if (numbersAdd == 42)
  27.                     {
  28.                         sign.Add((char)numbersAdd);
  29.                     }
  30.                     if (numbersAdd == 47)
  31.                     {
  32.                         sign.Add((char)numbersAdd);
  33.                     }
  34.                     if (numbersAdd == 43)
  35.                     {
  36.                         sign.Add((char)numbersAdd);
  37.                     }
  38.                     if (numbersAdd == 45)
  39.                     {
  40.                         sign.Add((char)numbersAdd);
  41.                     }
  42.                     if (numbersAdd == 40 || numbersAdd == 41)
  43.                     {
  44.                         sign.Add((char)numbersAdd);
  45.                         brackets.Add(i);
  46.                         brackeCounter++;
  47.                         int v = 0;
  48.                         for (int i = expression[brackets[v]]; i < expression[brackets[v+1]]; i++, v++)
  49.                         {
  50.                             numbersAdd = (int)Char.GetNumericValue(expression[p + 1]);
  51.  
  52.                             if (numbersAdd == -1)
  53.                             {
  54.                                 numbersAdd = (int)expression[p];
  55.                                 if (numbersAdd == 42)
  56.                                 {
  57.                                     signInBracket.Add((char)numbersAdd);
  58.                                 }
  59.                                 if (numbersAdd == 47)
  60.                                 {
  61.                                     signInBracket.Add((char)numbersAdd);
  62.                                 }
  63.                                 if (numbersAdd == 43)
  64.                                 {
  65.                                     signInBracket.Add((char)numbersAdd);
  66.                                 }
  67.                                 if (numbersAdd == 45)
  68.                                 {
  69.                                     signInBracket.Add((char)numbersAdd);
  70.                                 }
  71.  
  72.                                 else
  73.                                 {
  74.                                     numbersInBracket.Add(numbersAdd);
  75.                                 }
  76.  
  77.                             }
  78.                         }
  79.  
  80.                     }
  81.                 }
  82.                
  83.                 else
  84.                 {
  85.                     numbers.Add(numbersAdd);
  86.                 }
  87.             }
  88.  
  89.         int helper = 0;
  90.  
  91.         for (int i = 0, p = 0; i < (sign.Count - 1) - brackeCounter; i++, p++)
  92.         {
  93.             if (sign[p] != '(' && sign[p] != ')')
  94.             {
  95.                 if (sign[p] == '*' && helper == 0)
  96.                 {
  97.                     sumToBrackets += (numbers[p] * numbers[p + 1]);
  98.                 }
  99.                 if (sign[p] == '/' && helper == 0)
  100.                 {
  101.                     sumToBrackets += (numbers[p] / numbers[p + 1]);
  102.                 }
  103.                 if (sign[p] == '-' && helper == 0)
  104.                 {
  105.                     sumToBrackets += (numbers[p] - numbers[p + 1]);
  106.                 }
  107.                 if (sign[p] == '+' && helper == 0)
  108.                 {
  109.                     sumToBrackets += (numbers[p] + numbers[p + 1]);
  110.                 }
  111.                 helper = 1;
  112.                
  113.             }
  114.  
  115.             if (helper == 1)
  116.             {
  117.                 if (sign[p+1] == '*')
  118.                 {
  119.                     sumToBrackets *= numbers[p + 2];
  120.                 }
  121.                 if (sign[p+1] == '/')
  122.                 {
  123.                     sumToBrackets /= numbers[p + 2];
  124.                 }
  125.                 if (sign[p+1] == '-')
  126.                 {
  127.                     sumToBrackets -= numbers[p + 2];
  128.                 }
  129.                 if (sign[p+1] == '+')
  130.                 {
  131.                     sumToBrackets += numbers[p + 2];
  132.                 }
  133.             }
  134.         }
  135.  
  136.         Console.WriteLine("{0:F2}", sumToBrackets);
  137.     }
  138.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement