Работа со стеком с# - C#

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

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

Сначала я задаю последовательность скобок потом проверяю условие сколько пользователь их ввёл, если 4, то обращаюсь к каждой скобки и удаляю её из "коробки". Но дело в том, что программа не работает, я ввожу правильную последовательность, а оно мне выдаёт неверное количество элементов. и ещё п=мне захотелось, что бы в коде был вывод по одному элементу. что не так?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1
{
    class Program
    {

        static bool WellFormed(string Consistency)
        {
            //Создание и заполнение стека-образца
            Stack<char> SampleStack = new Stack<char>();
            SampleStack.Push('{');
            SampleStack.Push('}');
            SampleStack.Push('[');
            SampleStack.Push(']');
 
            // Создание и заполнение основного стека
            Stack<char> Stack = new Stack<char>(Consistency);
 
            for (int i = 0; i < Consistency.Length; i++)
            {
                if (Consistency[i] == '<' | Consistency[i] == '>' | Consistency[i] == '[' | Consistency[i] == ']')
                {
                    Stack.Push(Consistency[i]);
                }
            }

            // проверка количества введенных символов
            if (Stack.Count == 4)
            {
                foreach (char s in Stack)
                {
                    if (Stack.Pop() == SampleStack.Pop())
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                int c = 1; // выводят из стека по одному элементу
                do
                {
                    Stack.Pop(); //
                    SampleStack.Pop(); //
                    c++;
                }
                while (Stack.Peek() == SampleStack.Peek() && c < 4); //работа с ним продолжается только если они совпадут 
                // или если количество символов меньше 4
 
            }
            else
            {
                Console.WriteLine("Неверное количество вимволов");
                return false;
            }
            throw new Exception();
 
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Введите последовательность скобок для проверки");
            string aString;
            aString = Console.ReadLine();
            if (WellFormed(aString))
                Console.WriteLine("Последовательность {0} правильно построена", aString);
            else
                Console.WriteLine("Последовательность {0} не правильно построена", aString);
            Console.ReadKey();
           
        }
    }
}

Решение задачи: «Работа со стеком с#»

textual
Листинг программы
 throw new Exception();

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


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

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

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