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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2009, 23:19   #1
kinza
Новичок
Джуниор
 
Аватар для kinza
 
Регистрация: 07.06.2009
Сообщений: 13
По умолчанию Задача на рекурсию((

Во входном файле задан текст,за которым следует точка. Проверить является ли этот текст правильной записью "формулы":
<формула>::=<цифра>|(<формула><знак ><формула>)
<знак>::=+|-|*
<цифра>::=0|1|2|3|4|5|6|7|8|9


пожалуйста,если кто знает,как решить эту задачу,напишите код...
kinza вне форума Ответить с цитированием
Старый 07.06.2009, 23:57   #2
kinza
Новичок
Джуниор
 
Аватар для kinza
 
Регистрация: 07.06.2009
Сообщений: 13
По умолчанию

ну неужели совсем никто не знает как это сделать?((((
kinza вне форума Ответить с цитированием
Старый 08.06.2009, 00:04   #3
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

(<формула><знак ><формула>) - что значит формула?
Evgeniy26 вне форума Ответить с цитированием
Старый 08.06.2009, 00:16   #4
kinza
Новичок
Джуниор
 
Аватар для kinza
 
Регистрация: 07.06.2009
Сообщений: 13
По умолчанию

да я сама не понимаю(((завтра уточню у препода и напишу,ок?
kinza вне форума Ответить с цитированием
Старый 08.06.2009, 00:29   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Перевожу на русский.

Проверить — убедиться, что это формула (либо сообщить: "Нет, не формула").

<цифра>::=0|1|2|3|4|5|6|7|8|9

Здесь говорится, что операнд (если вам понятней — предикат) <цифра> — это 0 или 1 или 2 или 3 или...

<знак>::=+|-|*

Знак — это "плюс" либо "минус" либо "умножить".

А если честно, то | значит "или". Ну куда уж тут подробнее?

Последний раз редактировалось Sasha_Smirnov; 08.06.2009 в 01:05.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 08.06.2009, 00:34   #6
kinza
Новичок
Джуниор
 
Аватар для kinza
 
Регистрация: 07.06.2009
Сообщений: 13
По умолчанию

если чесно,мне это ни о чём не говорит(((можно поподробнее...
kinza вне форума Ответить с цитированием
Старый 08.06.2009, 09:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) не сказано на каком языке реализовывать
2) если делать всё по науке, то надо привлекать теорию построения компиляторов
читайте тут -
http://www.codenet.ru/progr/alg/cons/001.php
и тут
http://forum.ishodniki.ru/index.php?topic=14022.0
или поиском - на yandex

3) в Вашем случае можно реализовать обработку и без использования теории - можно разбирать код и, как только встретили недопустимый в данном месте символ - сразу выдавать ошибку и выходить.
Например. в вашем случае <формула> ВСЕГДА должна начинаться с цифры или открывающей круглой скобки. после цифры может идти либо цифра (значит продолжается запись числа, начатого на предыдущем шаге), либо <знак арифметической операции>
После круглой скобки может идти формула (это либо цифра, либо открывающая круглая скобка). после знака операции должна быть формула....
и т.д.

надеюсь, что я больше помог, чем запутал...
удачи.

Последний раз редактировалось Serge_Bliznykov; 08.06.2009 в 09:57.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java Вычислить, используя рекурсию. Лучик2009 Помощь студентам 0 28.04.2009 22:14
Задача про учеников на рекурсию Lion_paint Помощь студентам 1 27.02.2009 19:21
Ошибка в программе на рекурсию vitekbest Помощь студентам 13 14.06.2008 20:54
Задача на рекурсию. KoHgpaT Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2006 20:49