Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.99 KB | None | 0 0
  1. public static String[] toPolIt(String Str[], int Q)
  2.    {
  3.  
  4.    
  5.    
  6. String[] MainArray = new String[QQQ.GeneralValue];
  7. String[] OperationArray = new String[QQQ.ValueSign];
  8.  
  9. Q = QQQ.GeneralValue;
  10.  
  11.  
  12. int MAPos = 0; // позиция Главного массива  
  13. int OAPos = 0; // позиция массива операций
  14.  
  15. int parametr = 0; // ЕСЛИ ПОЯВЛЯЕТСЯ СКОБКА
  16.  
  17. for(int i = 0; i < QQQ.ValueSign; i++)
  18. {
  19.     System.out.println(OperationArray[i]);
  20. }
  21.  
  22. for(int i = 0; i < Q; i++)
  23. {
  24.     // Условие для цифр.
  25.     if (false ==  Str[i].equals("(") && false == Str[i].equals(")") &&
  26.         false ==  Str[i].equals("+") && false == Str[i].equals("-") &&
  27.         false ==  Str[i].equals("*") && false == Str[i].equals("/"))
  28.     {
  29.     MainArray[MAPos] = Str[i];
  30.     MAPos++;
  31.     System.out.println("Цифра записана = " + MainArray[MAPos-1]);
  32.     continue;
  33.     }
  34.  
  35.    
  36.  //Условие для открывающей скобки
  37.     if(true ==  Str[i].equals("(") )
  38. {
  39.         parametr++; // Прибавляем параметр, так как обнаружили скобку. 
  40. //      OAPos++; // Почему плюс? Перед или после знако присваивания?
  41.        
  42.         OperationArray[OAPos] = Str[i]; // Записываем значение текущего элемента массива в свободную стороку.
  43.  
  44.         OAPos++; // Переходим к следующему, как правило пустому, элементу массива.
  45.         continue; // Начинаем Главный цикл заново
  46. }
  47.    
  48.     // Условие для закрывающей скобки
  49.    
  50.  if(true ==  Str[i].equals(")")) // Если Правда, что Элемента Массива эквивалентен закрывающей скобке.
  51. {
  52.        
  53.  
  54. for(int k = 0 ; k <= QQQ.GeneralValue; k++ )
  55. {
  56.     System.out.println("OAPOS в цикле = " + OAPos);
  57.     if (true ==  Str[k].equals("+") && true == Str[k].equals("-") &&
  58.         true ==  Str[k].equals("*") && true == Str[k].equals("/"))
  59.         {
  60.    
  61.         MainArray[MAPos] = OperationArray[OAPos]; // текущий элемент на первой иттерации должен быть Знаком.
  62.         MAPos ++;
  63.         OAPos --; // Смещаем на предыдущий элемент, который может быть чем угодно.
  64.         // Если это скобка, тогда мы должны сместить элемент до знака.
  65.         // Если это знак, тогда нужно выйти из условия и записать элемент в главный массив
  66.         }
  67.     else if(OAPos == -1)
  68.     {
  69.         OAPos = 0;
  70.         parametr = 0;
  71.         continue;
  72.     }
  73.     else if(true == OperationArray[OAPos].equals("("))
  74.                 {
  75.             parametr --;
  76.             if(parametr == 0)
  77.             continue;
  78.                 }
  79.        
  80. }
  81.  
  82.        
  83. }
  84.    
  85. /////////////////////////////УСЛОВИЕ ДЛЯ ЗНАКОВ. LH and LL
  86. if(OAPos == 0)   // Если НЕТ цифры. Цифра отсеяна оператором continue в условии для цифр.
  87.                 // Скобки отсеяны выше.
  88. {
  89.     //OAPos++;
  90.     OperationArray[OAPos] = Str[i];  
  91.     OAPos++;
  92. }
  93. else if (OAPos>0)
  94. {
  95.    
  96.  
  97.     if(true ==  Str[i].equals("+") || true == Str[i].equals("-") )
  98.     {
  99.             System.out.println(" OperationArray[OAPos] =  " + OperationArray[OAPos]);
  100.             if(OperationArray[OAPos-1].equals("*") ||
  101.              OperationArray[OAPos-1].equals("/")) // LH
  102.             {  
  103.         //      OAPos--;
  104.                 MainArray[MAPos] = OperationArray[OAPos];
  105.                 MAPos++;
  106.                    
  107.                 OperationArray[OAPos] = Str[i];
  108.                 OAPos++;   
  109.                 System.out.println("Записан Знак");
  110.                 //OAPos++;
  111.             }
  112.  
  113.  
  114.             else if (OperationArray[OAPos-1].equals("+") ||
  115.                      OperationArray[OAPos-1].equals("-")) //  LL
  116.             {  
  117.                 //OAPos--;
  118.                 MainArray[MAPos] = OperationArray[OAPos];
  119.                 MAPos++;
  120.                 //OAPos++;
  121.                
  122.                 OperationArray[OAPos] = Str[i];
  123.                 OAPos++;
  124.                 System.out.println("Записан Знак");
  125.                 //OAPos++;
  126.             }
  127.            
  128.             else if (OperationArray[OAPos-1].equals("("))
  129.             {
  130.                
  131.                 OperationArray[OAPos] = Str[i];
  132.                 OAPos++;
  133.                 System.out.println("Записана знак после скобки");
  134.                 //OAPos++;
  135.             }
  136.    
  137.     }
  138.  
  139. //////////////////////////////////////////////////
  140.  
  141.  
  142. // HH and HL
  143. else if(true ==  Str[i].equals("*") || true == Str[i].equals("/"))
  144.     {
  145.  
  146.  
  147.             if(OperationArray[OAPos-1].equals("*") ||
  148.                OperationArray[OAPos-1].equals("/")) // HH
  149.             {
  150.                 //OAPos--;
  151.                 MainArray[MAPos] = OperationArray[OAPos];
  152.                 MAPos++;
  153.                
  154.                 OperationArray[OAPos] = Str[i];
  155.                 OAPos++;
  156.                 System.out.println("Записан Знак");
  157.                 //OAPos++; 
  158.                 }
  159.    
  160.  
  161.             else if ( OperationArray[OAPos-1].equals("+") ||
  162.                       OperationArray[OAPos-1].equals("-")) // HL
  163.             {
  164.             //OAPos++;
  165.                 OperationArray[OAPos] = Str[i]; // HL. Добавление оператора в строку
  166.                 OAPos++;
  167.                 System.out.println("Записан Знак");
  168.                 //  OAPos++;
  169.             }
  170.             else if (OperationArray[OAPos-1].equals("("))
  171.             {
  172. //              OAPos++;
  173.                 OperationArray[OAPos] = Str[i];
  174.                 OAPos++;
  175.                 System.out.println("Записан Знак");
  176.                 //OAPos++;
  177.             }
  178.    
  179.            
  180.    
  181.     }
  182.    
  183. }
  184. ////////////////////////////////////////////////
  185.  
  186. }
  187.  
  188. System.out.println(" OAPos на последней итерации перед выходом из функции равно = " + OAPos);
  189. //OAPos--;
  190.  
  191. for(int i = OAPos; i >= 0; i--)
  192.  
  193. {
  194.    
  195. MainArray[MAPos] = OperationArray[i];
  196. MAPos++;
  197. }
  198.  
  199.  
  200. System.out.println(" OAPos на последней итерации перед выходом из функции равно = " + OAPos);
  201.  
  202. for (int k = 0; k < QQQ.GeneralValue; k++) // прогоняем строку, показываем массив
  203. {
  204.     System.out.println("Элемент массива MainPos " + k + " = " + MainArray[k]);
  205. }
  206.  
  207. for (int k = 0; k < QQQ.ValueSign; k++) // прогоняем строку, показываем массив
  208. {
  209.     System.out.println("Элемент массива OperationPos" + k + " = " + OperationArray[k]);
  210. }
  211.  
  212. return MainArray;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement