Advertisement
Guest User

3.Enigmanation

a guest
Feb 1st, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1. using System;
  2. class Program
  3. {
  4.     static void Main()
  5.     {
  6.         string expression = Console.ReadLine();
  7.         char currentOperator = '+';
  8.         char currentBracketOperator = '+';
  9.         decimal result = 0;
  10.         decimal currentBracketResult = 0;
  11.         bool inBracket = false;
  12.         foreach (char symbol in expression)
  13.         {
  14.             // Проверява дали има скоби
  15.             if (symbol == '(')
  16.             {
  17.                 inBracket = true;
  18.                 continue;
  19.             }
  20.             if (symbol == ')')
  21.             {
  22.                 inBracket = false;
  23.                 currentBracketOperator = '+';
  24.                 switch (currentOperator)
  25.                 {
  26.                     case '+': result += currentBracketResult; break;
  27.                     case '-': result -= currentBracketResult; break;
  28.                     case '%': result %= currentBracketResult; break;
  29.                     case '*': result *= currentBracketResult; break;
  30.                 }
  31.  
  32.                 currentBracketResult = 0; // 1. БЕШЕ ПРЕДИ SWITCH-A
  33.             }
  34.             // Проверява какъв е символа
  35.             switch (symbol)
  36.             {
  37.                 case '+':
  38.                 case '-':
  39.                 case '%':
  40.                 case '*':
  41.                     {    // 2. НЕ БЕШЕ ПОСТАВЕНО КОРЕКТНО СЛЕД CASE-A
  42.                         if (inBracket)
  43.                         {
  44.                             currentBracketOperator = symbol;
  45.                         }
  46.                         else
  47.                         {
  48.                             currentOperator = symbol;
  49.                         }
  50.                     }
  51.                     break;
  52.             }
  53.             //Проверява дали е число
  54.             if (symbol >= '0' && symbol <= '9')
  55.             {
  56.                 int currentNumber = symbol - '0';
  57.                 //Ако има скоба, праща числото вътре. Ако няма - в крайния резултат
  58.                 if (inBracket)
  59.                 {
  60.                     switch (currentBracketOperator)
  61.                     {
  62.                         case '+': currentBracketResult += currentNumber; break;
  63.                         case '-': currentBracketResult -= currentNumber; break;
  64.                         case '%': currentBracketResult %= currentNumber; break;
  65.                         case '*': currentBracketResult *= currentNumber; break;
  66.                     }
  67.                 }
  68.                 else
  69.                 {
  70.                     switch (currentOperator)
  71.                     {
  72.                         case '+': result += currentNumber; break;
  73.                         case '-': result -= currentNumber; break;
  74.                         case '%': result %= currentNumber; break;
  75.                         case '*': result *= currentNumber; break;
  76.                     }
  77.                 }
  78.             }
  79.         }
  80.  
  81.         Console.WriteLine("{0:F3}", result); //3 ИЗВЪН ЦИКЪЛА
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement