Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Викторка
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
1

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

21.05.2013, 22:41. Просмотров 1239. Ответов 3
Метки нет (Все метки)

Сначала я задаю последовательность скобок
потом проверяю условие сколько пользователь их ввёл, если 4, то обращаюсь к каждой скобки и удаляю её из "коробки". Но дело в том, что программа не работает, я ввожу правильную последовательность, а оно мне выдаёт неверное количество элементов. и ещё п=мне захотелось, что бы в коде был вывод по одному элементу. что не так?
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
73
74
75
76
77
78
79
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();
           
        }
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 22:41
Ответы с готовыми решениями:

Работа со стеком
Ввести с клавиатуры число Х. Добавить в стек нечетные числа из диапазона от 1 до Х. Извлечь 10...

Работа со стеком
Создать программу, реализовав работу со структурой данных - стеком. В программе реализовать...

Работа со стеком
Добрый день! Помогите, пожалуйста, с заданием: &quot;Просмотреть элемент в вершине стека без удаления....

работа со стеком
требуется удалить из стэка допустим 5-ый элемент из 10. Как это сделать? И как задать стэк...

Ошибка в коде (работа со стеком)
Помогите найти ошибку в коде, не могу запустить. using System; using System.Collections; public...

3
Psilon
Master of Orion
Эксперт .NET
6050 / 4908 / 903
Регистрация: 10.07.2011
Сообщений: 14,520
Записей в блоге: 5
Завершенные тесты: 4
22.05.2013, 01:49 2
Викторка, количество тут вообще не при чем.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public bool BadBreckets() //Проверяем баланс скобок в строке
        {
            int i = 0;
            foreach (char c in Input)
            {
                if (c == '(')
                    i++;
                else if (c == ')')
                {
                    i--;
                    if (i < 0)
                        return false;
                }
            }
            return i != 0;
        }
тут 2 вида скобок. Для определения всех вариантов нужно создать словарь открывающих и закрывающих скобок.
0
Викторка
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
22.05.2013, 14:48  [ТС] 3
Psilon, не могу понять зачем нам вот эта строчка
C#
1
 throw new Exception();
что она делает? это типа если не правильная последовательность скобок, то программа автоматически закрываться?
0
GloryMU
53 / 53 / 16
Регистрация: 25.02.2013
Сообщений: 171
22.05.2013, 16:00 4
если что-то пойдет не по плану будет вызвано исключение
0
22.05.2013, 16:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 16:00

Работа со стеком, вопрос скорости и оптимальности
Добрый вечер всем программистам. Не так давно начал изучать язык C# по урокам Александра гудка...

Стек. Работа со стеком. Закомментировать просто надо
Не могу разобраться. Прошу подписать комментарии что к чему. Желательно пошагово using System;...

Работа со стеком
Ребят, помогите пожалуйста с заданиями: Задание 1 Реализовать стек списком. Все стандартные...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.