Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 11:38   #1
Шорох Анастасия
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию Проверить правильность расстановки скобок в строке S

Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим образом:
<текст> ::= <элемент> | <элемент><текст>
<элемент> ::= a | b | c | (<текст>) | [<текст>] | {<текст>}
Если текст составлен правильно, то вывести True, иначе вывести False.

у кого мозги на месте, решите, а( и можно еще простыми словами объяснить что к чему здесь, чего от меня вообще хотят в задаче....
Шорох Анастасия вне форума Ответить с цитированием
Старый 22.05.2013, 12:04   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
у кого мозги на месте, решите, а(
Посмотрите на блок "похожие темы" внизу страницы.
Цитата:
и можно еще простыми словами объяснить что к чему здесь, чего от меня вообще хотят в задаче....
"Текст" - это один или больше "элементов". "Элемент" - это буква a, b, c, или "текст" в скобках.
К примеру:
(abba){ba{ab[c]}a}bb

Как способ, который в "похожих темах" вроде не описан, можно написать две функции, "текст" и "элемент". Каждая принимает "текущее" место в строке и проверяет, можно ли фрагмент от этого места соотнести с "текстом" или "элементом", соответственно; к сожалению, описание "текста" для работы этой функции нужно творчески переработать - не уверен, что Вам дали необходимые для этого знания. Вот пример функций на Си (функции возвращают место в тексте сразу за концом разобранного ими фрагмента или NULL, если случился облом):
Код:
const char* is_text(const char* pos){
  const char* nextPos;
  if((pos = is_element(pos)) == NULL) return NULL;
  while((nextPos = is_element(pos)) != NULL) pos = nextPos;
  return pos;
}

const char* is_element(const char* pos){
  switch(*pos){
  case 'a':
  case 'b':
  case 'c':
    return pos+1;
  case '(':
    pos = is_text(pos+1);
    if(pos == NULL) return NULL;
    if(*pos != ')') return NULL;
    return pos+1;
  //с другими скобками аналогично
  default:
    return NULL;
  }
}
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить правильность скобок (С++) Cheat Помощь студентам 24 03.02.2013 19:34
Проверить правильность расстановки круглых и квадратных скобок в выражениях tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 13 06.07.2012 11:50
Программа проверки правильности расстановки скобок glushara Помощь студентам 2 23.04.2012 02:49
Проверка правильности расстановки круглых скобок. torren108 Помощь студентам 7 11.12.2011 20:15
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 13:07