![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 15.10.2011
Сообщений: 3
|
![]()
Здравствуйте! Очень прошу помочь! Не пойму суть задачи, и следовательно не могу ее написать... Помогите разобраться и составить код. Рекурсия!!
Задача: Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> Буду очень благодарна за помощь!!!! http://www.cyberforum.ru/pascal/thread66712.html Вот тут нашла подобную задачу, только для логического выражения. Может, кто посмотрит и переделает для моего случая?? Сама я вообще не понимаю суть этого строкового выражения(((( |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Ну уж нет, пусть лучше они заглянут сюда и поучатся - тот их бред нуждается в исправлениях..
Что тут писать вообще? ![]() Код:
Только учти: тут нет абсолютно никакой диагности ошибок в выражении! Выражение ДОЛЖНО быть правильным (то есть написанным по так, как сказано в условии).
Предпочитаю на "ты".
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 15.10.2011
Сообщений: 3
|
![]()
Оуу, спасибо большое!!! куда только не писала, нигде не помогли(((
Неясно только что там есть <цифра>|<выражение>, как я понимаю это или цифра или выражение, так? И как в самой строке S сделать чтобы вместо цифр было выражение? Можно вот так?? writeln(Calculate('1+2+3-S+9')); Или значок "|" означает что то другое? |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]() Цитата:
<выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> - надо понимать так: выражение состоит из цифр, между которыми либо +, либо -. И этому нужно следовать БУКВАЛЬНО. То есть, например, две цифры подряд (то есть двузначное число) быть НЕ МОЖЕТ. В определении не сказано, чему равно ЗНАЧЕНИЕ выражения. Из этого можно сделать вывод, что значение определяется, так сказать, "обычным" образом. То есть значение цифры равно числу, которое она выражает (однозначному), а сумма и разность считаются тоже как обычная сумма и обычная разность. И в результате получается, что это выражение - это просто сумма и разность цифр, и ничего больше! ![]() Ты где учишься и на кого? Понимаешь, такие определения носят формальный и абсолютно точный характер. Подобные вещи хорошо знакомы математикам. Но если ты не совсем математик, то тебе может показаться, что я вообще несу ахинею )). Постарайся усвоить одно: нужно ЧЕТКО следовать данному определению. В определении нигде нет никаких S. Значит, их не должно быть и в выражении. Еще раз повторю: <выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> - это значит, что к цифре можно добавить "+ цифра" или "- цифра" - причем сколько угодно раз. На самом деле, все ОЧЕНЬ просто. Но формализация простых и привычных вещей часто кажется предельно сложной. Нужно уметь за всем этим видеть суть, схватывать ее и не давать себя сбить с толку. Правда же, просто? ![]()
Предпочитаю на "ты".
Последний раз редактировалось TinMan; 16.10.2011 в 14:11. |
|
![]() |
![]() |
![]() |
#5 | |
Регистрация: 15.10.2011
Сообщений: 3
|
![]() Цитата:
![]() ![]() Все, дошло до меня это все))) Спасибо огромное, все так внятно и понятно рассказал ![]() |
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]() Цитата:
![]() Спрашивай еще.
Предпочитаю на "ты".
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия на Си | Хитман | Помощь студентам | 3 | 10.04.2011 15:48 |
Рекурсия | Наташок | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 08.04.2011 18:44 |
Рекурсия. | KOPC1886 | Помощь студентам | 1 | 09.12.2010 21:37 |
Задача в паскале (рекурсия) | Feil | Помощь студентам | 2 | 25.12.2009 12:04 |
Рекурсия | seeton | Помощь студентам | 0 | 08.12.2009 17:41 |