Загрузка данных


class CTEK {
    private int maxSize; 
    private char[] stackArray;
    private int top; 

    public CTEK(int max) {
        maxSize = max;
        stackArray = new char[maxSize];
        top = -1;
    }

    public void push(char j) {
        stackArray[++top] = j;
    }

    public char pop() {
        return stackArray[top--];
    }

    public char peek() {
        return stackArray[top];
    }

    public boolean isEmpty() {
        return (top == -1);
    }
}

// === ЗАДАЧА 1: Переворот строки ===
class Reverser {
    private String input; //исходник
    private String output; //реверс

    public Reverser(String text) { 
        input = text; 
    }

    public String doRev() {
        int stackSize = input.length(); 
        CTEK theStack = new CTEK(stackSize); 
        
        for(int j = 0; j < input.length(); j++) {
            char ch = input.charAt(j); 
            theStack.push(ch);  
        }
        
        output = ""; 
        while(!theStack.isEmpty()) { 
            char ch = theStack.pop(); 
            output = output + ch;  
        }
        return output; 
    }
}

// === ЗАДАЧА 2: Проверка скобок ===
class BracketsChecker {
    private String input;

    public BracketsChecker(String in) {
        input = in;
    }

    public void check() {
        int stackSize = input.length();
        CTEK theStack = new CTEK(stackSize);

        for (int j = 0; j < input.length(); j++) {
            char ch = input.charAt(j);
            
            if (ch == '(') {
                theStack.push(ch); // Нашли открывающую — кидаем в стек
            } else if (ch == ')') {
                if (!theStack.isEmpty()) {
                    theStack.pop(); // Нашли закрывающую и стек не пуст — убираем парную '('
                } else {
                    // Если пришла ')', а в стеке пусто, значит закрывающая скобка лишняя
                    System.out.println("Результат проверки скобок: «Неправильно»");
                    return;
                }
            }
        }
        
        // Если стек в итоге пустой — всё четко. Если осталась '(' — ей не хватило пары
        if (theStack.isEmpty()) {
            System.out.println("Результат проверки скобок: «Правильно»");
        } else {
            System.out.println("Результат проверки скобок: «Неправильно»");
        }
    }
}

class ReverseApp {
    public static void main(String[] args) {
        // --- Тест задачи №1 ---
        String inputStr = "HELLO"; 
        Reverser theReverser = new Reverser(inputStr);
        String outputStr = theReverser.doRev();
        System.out.println("Original: " + inputStr);
        System.out.println("Reversed: " + outputStr);

        String bracketsStr = "((())))(";
        System.out.println("Проверяем строку: " + bracketsStr);
        BracketsChecker checker = new BracketsChecker(bracketsStr);
        checker.check();
    }
}