|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.10.2011, 22:37 | #1 |
Регистрация: 15.10.2011
Сообщений: 3
|
Рекурсия на паскале
Здравствуйте! Очень прошу помочь! Не пойму суть задачи, и следовательно не могу ее написать... Помогите разобраться и составить код. Рекурсия!!
Задача: Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> Буду очень благодарна за помощь!!!! http://www.cyberforum.ru/pascal/thread66712.html Вот тут нашла подобную задачу, только для логического выражения. Может, кто посмотрит и переделает для моего случая?? Сама я вообще не понимаю суть этого строкового выражения(((( |
16.10.2011, 04:13 | #2 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Ну уж нет, пусть лучше они заглянут сюда и поучатся - тот их бред нуждается в исправлениях..
Что тут писать вообще? Все же написано в определении выражения.. Требуется только пара минут, чтоб перевести на Pascal. Код:
Только учти: тут нет абсолютно никакой диагности ошибок в выражении! Выражение ДОЛЖНО быть правильным (то есть написанным по так, как сказано в условии).
Предпочитаю на "ты".
|
16.10.2011, 10:57 | #3 |
Регистрация: 15.10.2011
Сообщений: 3
|
Оуу, спасибо большое!!! куда только не писала, нигде не помогли(((
Неясно только что там есть <цифра>|<выражение>, как я понимаю это или цифра или выражение, так? И как в самой строке S сделать чтобы вместо цифр было выражение? Можно вот так?? writeln(Calculate('1+2+3-S+9')); Или значок "|" означает что то другое? |
16.10.2011, 14:03 | #4 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Цитата:
<выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> - надо понимать так: выражение состоит из цифр, между которыми либо +, либо -. И этому нужно следовать БУКВАЛЬНО. То есть, например, две цифры подряд (то есть двузначное число) быть НЕ МОЖЕТ. В определении не сказано, чему равно ЗНАЧЕНИЕ выражения. Из этого можно сделать вывод, что значение определяется, так сказать, "обычным" образом. То есть значение цифры равно числу, которое она выражает (однозначному), а сумма и разность считаются тоже как обычная сумма и обычная разность. И в результате получается, что это выражение - это просто сумма и разность цифр, и ничего больше! Ты где учишься и на кого? Понимаешь, такие определения носят формальный и абсолютно точный характер. Подобные вещи хорошо знакомы математикам. Но если ты не совсем математик, то тебе может показаться, что я вообще несу ахинею )). Постарайся усвоить одно: нужно ЧЕТКО следовать данному определению. В определении нигде нет никаких S. Значит, их не должно быть и в выражении. Еще раз повторю: <выражение> ::= <цифра>|<выражение> + <цифра>|<выражение> - <цифра> - это значит, что к цифре можно добавить "+ цифра" или "- цифра" - причем сколько угодно раз. На самом деле, все ОЧЕНЬ просто. Но формализация простых и привычных вещей часто кажется предельно сложной. Нужно уметь за всем этим видеть суть, схватывать ее и не давать себя сбить с толку. Правда же, просто?
Предпочитаю на "ты".
Последний раз редактировалось TinMan; 16.10.2011 в 14:11. |
|
16.10.2011, 18:17 | #5 | |
Регистрация: 15.10.2011
Сообщений: 3
|
Цитата:
Все, дошло до меня это все))) Спасибо огромное, все так внятно и понятно рассказал Действительно, все просто)) |
|
16.10.2011, 22:41 | #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 |