Определение правильности скобок - C#

Узнай цену своей работы

Формулировка задачи:

Люди помогите плз! Необходимо осуществить возможность введения скобок с консоли, поместить их в стек и потом определить, правильна ли последовательность этих скобок. Вот вроде бы код но я не могу понять как занести то что ввел с клавы в стек, и как брать следующий член стека
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
 
namespace ConsoleApplication23
{
    class Program
    {
        static bool WellFormed(string astr)
        {
            char xi, xj;
            Stack<char> stack1 = new Stack<char>();
            for (int i = 0; i < astr.Length; i++)
                stack1.Push(astr[i]);
                
            while (stack1.Count > 0)
            {
                xi=stack1.Peek();
                if (xi = '{' | xi = '[')
                    stack1.Push(xi);
                else stack1.Pop();
                if (xi!=xj)
                    Console.WriteLine("Nepravilno");
                //Переместиться на 1 элемент вправо                        
            }
            if (stack1.Count == 0)
                Console.WriteLine("Pravilno");
            else Console.WriteLine("Nepravilno");
        }
        static void Main(string[] args)
        {
            
            string astr;
            astr = Console.ReadLine();
            WellFormed(astr);
            
        }
    }
}

Решение задачи: «Определение правильности скобок»

textual
Листинг программы
        static void CheckBrackets(string text)
        {
            Stack<char> stack = new Stack<char>();
 
            foreach(Char c in text)
                switch (c)
                {
                    case '}':
                        if (stack.Pop() != '{')
                            throw new Exception("Лишняя закрывающая скобка '}'");
                        break;
                    case ']':
                        if (stack.Pop() != '[')
                            throw new Exception("Лишняя закрывающая скобка ']'");
                        break;
                    case '[':
                    case '{':
                        stack.Push(c);
                        break;
                }
            if (stack.Count > 0)
                throw new Exception("Не найдена закрывающая скобка для " + stack.Pop());
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы