Написать программу, которая определяет, является ли скобочное выражение правильным - C#

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

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

Подскажите как написать программу на С++ или С#, которая определяет, является ли скобочное выражение правильным. Примеры правильных скобочных выражений: (), (())(), ()(), ((())) и неправильных: )(, ())((), (, )))), ((()). Указание: рассматриваем последовательно каждый символ заданной строки слева направо. Если очередной символ – левая скобка, то размещаем ее в стеке, если правая – то извлекаем элемент из стека (это обязательно должна быть левая скобка) . После рассмотрения всей строки, если выражение правильно, стек должен оказаться пустым.

Решение задачи: «Написать программу, которая определяет, является ли скобочное выражение правильным»

textual
Листинг программы
  1. static bool TestParenthesis(string source)
  2.         {
  3.             Stack<int> stack = new Stack<int>();
  4.             foreach (char character in source)
  5.             {
  6.                 int index = "([{)]}".IndexOf(character);
  7.                 if (index >= 3)
  8.                 {
  9.                     if (stack.Count == 0 || stack.Pop() != index) return false;
  10.                 }
  11.                 else if (index >= 0) stack.Push(index + 3);
  12.             }
  13.             return stack.Count == 0;
  14.         }
  15.         static void Main(string[] args)
  16.         {
  17.             string goodSource = "{[]}[]()";
  18.             Console.WriteLine(TestParenthesis(goodSource));
  19.             string basSource = "{[]}[])";
  20.             Console.WriteLine(TestParenthesis(basSource));
  21.             Console.ReadKey();
  22.         }

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


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

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

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы