Arkanium77

Untitled

Nov 12th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.85 KB | None | 0 0
  1. package examplestk2;
  2.  
  3. import java.util.Scanner;
  4.  
  5. import java.lang.Character;
  6.  
  7. class SteckUnderflow extends Exception {
  8.  
  9.     @Override
  10.     public String toString() {
  11.         return "Стек пуст";
  12.     }
  13. }
  14.  
  15. class SteckOverflow extends Exception {
  16.  
  17.     @Override
  18.     public String toString() {
  19.         return "Переполнение стека";
  20.     }
  21. }
  22.  
  23. /**
  24.  * **************************************************
  25.  * класс Stk2 - стек произвольных объектов Реализован в виде массива элементов
  26.  * **************************************************
  27.  */
  28. class Stk2 {
  29.  
  30.     private Object[] ObStack;       // Массив объектов - стек
  31.     private int nElem;              // Количество элементов в стеке
  32.  
  33.     // конструкторы
  34.     Stk2(int n) throws SteckUnderflow {
  35.         // n должно быть положительным
  36.         if (n <= 0) {
  37.             throw new SteckUnderflow();
  38.         }
  39.         // Резервируем память под n элементов
  40.         ObStack = new Object[n];
  41.         // элементов в стеке пока нет
  42.         nElem = 0;
  43.     }
  44.  
  45.     Stk2() throws SteckUnderflow {
  46.         this(1000); // используем вызов более общего конструктора
  47.     }
  48.  
  49.     // Добавление элемента в стек
  50.     void push(Object e) throws SteckOverflow {
  51.         // Проверка на переполнение
  52.         if (nElem == ObStack.length) {
  53.             throw new SteckOverflow();
  54.         }
  55.         // Новый элемент добавляется в стек
  56.         ObStack[nElem++] = e;
  57.     }
  58.  
  59.     // Выталкивание элемента из стека
  60.     Object pop() throws SteckUnderflow {
  61.         // Проверка стека не пустоту
  62.         if (nElem == 0) {
  63.             throw new SteckUnderflow();
  64.         }
  65.         // Физически верхний элемент остается в массиве,
  66.         // но количество элементов уменьшается
  67.         return ObStack[--nElem];
  68.     }
  69.  
  70.     // Значение верхнего элемента без его удаления
  71.     Object peek() throws SteckUnderflow {
  72.         // Проверка стека не пустоту
  73.         if (nElem == 0) {
  74.             throw new SteckUnderflow();
  75.         }
  76.         // Верхний элемент возвращается в качестве результата
  77.         return ObStack[nElem - 1];
  78.     }
  79.  
  80.     // Удаление всех элементов из стека (создание пустого стека)
  81.     void makeEmpty() {
  82.         // Физически элементы из массива не убираются,
  83.         // но количество элементов сбрасывается в ноль
  84.         nElem = 0;
  85.     }
  86.  
  87.     // Проверка стека на пустоту
  88.     boolean empty() {
  89.         // Проверяем только количество элементов
  90.         return nElem == 0;
  91.     }
  92.  
  93.     public boolean full() { //проверка на заполненность
  94.  
  95.         return (nElem == 1);
  96.     }
  97.  
  98. } // к классу Stk2
  99.  
  100. public class Examplestk2 {
  101.  
  102.     static int toInt(double a) {
  103.         int b = 0;
  104.         while (b < a) {
  105.             b++;
  106.         }
  107.         return b;
  108.     }
  109.  
  110.     public static void main(String arg[]) throws SteckOverflow, SteckUnderflow {
  111.         Scanner sc = new Scanner(System.in);
  112.         Stk2 m = new Stk2();
  113.         System.out.print("Введите строку: ");
  114.         String rt;
  115.         int t, y;
  116.         long w, r;
  117.         Object q;//, v, c;
  118.         double v, c;
  119.         rt = sc.nextLine();
  120.         char[] x = rt.toCharArray();
  121.         t = rt.length() - 1;
  122.         for (int i = t; i > -1; i--) {
  123.             y = rt.charAt(i);
  124.             if (y == 41 || y == 44 || y == 40) {
  125.  
  126.             } else if (y < 58 && y > 47) {
  127.                 m.push(x[i]);
  128.             } else if (y == 109 || y == 77) {
  129.                 //w=Long.parseLong(rt.get(i).toString());
  130.                 System.out.println(m.peek());
  131.                 v = (int) (char) m.pop();
  132.                 c = (int) (char) m.pop();
  133.                 if (y == 77) {
  134.                     if ((double) v < (double) c) {
  135.  
  136.                         m.push(c);
  137.                     } else {
  138.  
  139.                         m.push(v);
  140.                     }
  141.                 }
  142.                 if (y == 109) {
  143.                     if ((double) v < (double) c) {
  144.  
  145.                         m.push(v);
  146.                     } else {
  147.  
  148.                         m.push(c);
  149.                     }
  150.                 }
  151.  
  152.             }
  153.         }
  154.         int tmpc = toInt((double) m.peek());
  155.         System.out.println(((char) tmpc));
  156.  
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment