Форум программистов, компьютерный форум CyberForum.ru

Стек - C++

Восстановить пароль Регистрация
 
john_jerome
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
19.04.2011, 18:21     Стек #1
Используя программный стек, написать программу, которая проверяет баланс скобок: "()", "[]", "{}", "<>"

На С
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 18:21     Стек
Посмотрите здесь:

Стек C++
C++ Стек
C++ Стек
C++ Стек
C++ стек
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kiborg_18
4 / 4 / 0
Регистрация: 21.02.2011
Сообщений: 61
19.04.2011, 20:00     Стек #2
В лоб считаем открывающиеся скобки, пихаем их в стек, затем если попадётся открывающася скобка проверяем с той что последняя в стеке, если да, то выкидываем её из стека. Обычная функция стек с массивом. Ничего сложного

Добавлено через 2 минуты
C
1
2
3
4
5
6
7
8
 //тут цикл пробег по строке
 switch (/*элемент строки*/)
  {
    case: // все типы открывающихся скобок пихаем в стек
    case: // закрывающаяся скобка, проверка элемента стека, если совпадаем со второй половинкой удаляем из стека
  }
 if (/*Стек пуст*/ ) //всё ок
 //иначе неверная последовательность
Добавлено через 1 минуту
p.s. надеюсь помог)
john_jerome
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
19.04.2011, 21:48  [ТС]     Стек #3
Спасибо, конечно, но хотелось увидеть бы код немного подробнее
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
19.04.2011, 21:53     Стек #4
Поиск по нашему форуму на фразу "Балланс скобок": тыц
kiborg_18
4 / 4 / 0
Регистрация: 21.02.2011
Сообщений: 61
19.04.2011, 22:08     Стек #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 char s[256];
 char stack[128];
 scanf("%s",s);
 for (i=0; i<size_of_line; i++)
  {
    switch (s[i])
      {
        case '(': { add_stack() /*обычная функция работы сос теком*/ ; break; }
        case ')': { if (max_stack!=0 && stack[max_stack-1]=='(' ) delete() /* найди в форуме удаление эл стека */ ; else { printf("неверно"); return 0; }break; }
        default: break;
      }
   }
 if (max_stack==0) printf("Баланс правильный");
 else //распечатай массив и сообщи что эти скобки лишние
Вроде так, надеюсь ты писал функцию с обычным стеком и нужные функции добавишь. Если нет, юзай поиск на форуме, дня 2-3 назад такая тема была, там что надо найдёшь)
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
20.04.2011, 07:42     Стек #6
Цитата Сообщение от kiborg_18 Посмотреть сообщение
stack[max_stack-1]
Это вы так со стеком работаете?
Yandex
Объявления
20.04.2011, 07:42     Стек
Ответ Создать тему
Опции темы

Текущее время: 05:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru