С Новым годом! Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 3

Использование стека для проверки открывающихся и закрывающихся скобок на C#

06.09.2016, 07:07. Показов 2379. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Необходимо реализовать программу для проверки в тексте на открывающиеся и закрывающиеся скобки с помощью стека. Логика в принципе проста: встречаем в тексте открывающуюся скобку - закидываем в первый стек, закрывающуюся - во второй стек. Но компилятор выдает ошибку, а практического опыта я не имею. Можете, пожалуйста, подсказать, что у меня не так?

Вот моя программа:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class KrugSk
    {
        static public void my()
        {
            
            string str;
 
            Console.WriteLine("Введите выражение!");
 
            str = Console.ReadLine();
 
 
            int numKrOpen=1, numKrClose=1;
            char openKr, closeKr;
 
            Stack<int> numberKrOpen = new Stack<int>();               //Проверяем круглые скобки
            Stack<int> numberKrClose = new Stack<int>();
 
            for (int i = 0; i < str.Length; i++)                                   
            {
 
                if (str[i] == '(')
                {
                    numberKrOpen.Push(str[i]);
                                      
                }                
            }
 
            for (int i = 0; i < str.Length; i++)
            {
 
                if (str[i] == ')')
                {
                    numberKrClose.Push(str[i]);
 
                }
            }
 
            openKr = (char)numberKrOpen.Pop();
            closeKr = (char)numberKrClose.Pop();
 
            for (int i=0; i<str.Length; i++)
            {
                numberKrOpen.Pop();
                numberKrClose.Pop();
 
                if (openKr == 0 || closeKr == ')')
                {
                    Console.WriteLine("Не хватает открывающейся скобки!");
                }
 
                else if (openKr == '(' || closeKr == 0)
                {
                    Console.WriteLine("Не хватает закрывающейся скобки!");
                }
 
            }
 
        }
 
 
        }
 
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2016, 07:07
Ответы с готовыми решениями:

Для каждой строки проверить сбалансированность открывающихся и закрывающихся скобок
Дан текстовый файл, каждая строка которого переставляет собой арифметическое выражение. Реализовать ввод, удаления и корректировку данных в...

Количество открывающихся и закрывающихся скобок
помогите выполнить задание В тексте есть скобки «(» или «)» Подсчитать количество открывающихся и закрывающихся скобок Заменить...

Баланс открывающихся и закрывающихся скобок
Проверить, имеются ли в заданном тексте баланс открывающихся и закрывающихся скобок.

1
Модератор
Эксперт функциональных языков программирования
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
06.09.2016, 08:56
Цитата Сообщение от Дмитрий1233211 Посмотреть сообщение
Логика в принципе проста: встречаем в тексте открывающуюся скобку - закидываем в первый стек, закрывающуюся - во второй стек.
Встречаем открывающую скобку - закидываем её в стек. Встречаем закрывающую - вынимаем из стек открывающую скобку. Если мы встретили закрывающую, а стек пустой - ошибка. Если текст закончился, а стек не пустой - ошибка.
Так как все элементы в стеке одинаковые, его можно реализовать на основе типа int (просто считать количество скобок в стеки).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2016, 08:56
Помогаю со студенческими работами здесь

Проверить баланс открывающихся и закрывающихся скобок
Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.

Баланс открывающихся и закрывающихся скобок.Стеки в JS
Помогите пожалуйста с программой на JavaScript(((((((( Задание: Проверка баланса открывающихся и закрывающихся скобок через стек. Т.е. ...

Проверить баланс открывающихся и закрывающихся скобок
Составить подпрограмму, определяющую, есть ли в заданном., тексте баланс открывающихся и закрывающихся скобок. Используя ее, определить...

Проверить баланс открывающихся и закрывающихся скобок
Всем доброй ночи. Не спящие помогите с решением задач. Знаю, что простейшие, но с Паскалем очень и очень сложно. Буду очень благодарен! ...

Определить баланс открывающихся и закрывающихся скобок
Уважаеммые программеры, помогите с задачей: &quot;Составить подпрограмму определения баланса открывающихся и закрывающихся скобок в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru