рекурсия- расстановка знаков |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия- расстановка знаков |
Екатерина7 |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
помогите, пожалуйста, разобраться с задачей
Для заданного набора целых чисел без знака расставить между ними арифметические знаки сложения, деления, и умножения так, чтобы результат вычисления полученного арифметического выражения был минимальным. Число знаков умножения в этом выражении должно быть равным или на 2 больше, чем знаков сложения, а знаков сложения- равно или на 1 больше, чем знаков деления. В наборе должно быть не менее четырех чисел, а в полученном выражении должны присутствовать все три арифметических знака. (умножение и деление имеют приоритет перед операциями сложения и вычитания, деление производится с остатком) Сообщение отредактировано: Екатерина7 - |
Lapp |
Сообщение
#2
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Остается открытым вопрос про приоритеты операций. Нужно его учитывать или нет? Пожалуйста, уточни. Решения отличаются довольно сильно.
Решение без приоритетов несложное. Собственно, вот оно.. const Я его слишком придирчиво не проверял (не на чем, не считать же на бумажке)). Нашедшему существенную ошибку - плюс в репу)). Катя, спрашивай, что неясно. Его можно в принципе переделать и на приоритеты.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
я же вроде там в скобочках дописала..
(умножение и деление имеют приоритет перед операциями сложения и вычитания, деление производится с остатком) Добавлено через 5 мин. еще несовсем понятно эта строчка Res,Min: tNum; и вот это Dec(Ad); Добавлено через 1 мин. Dec(Ad);- это результат операции какой-то? |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
я же вроде там в скобочках дописала.. Извиняюсь, не заглянул наверх (лучше говорить по ходу темы)Цитата еще несовсем понятно эта строчка Res,Min: tNum; Res - это сам результат выполнения операций. В самом начале он равен первому числу, потом "накапливается" по мере выполнения. и вот это Dec(Ad); Dec(Ad);- это результат операции какой-то? Min - это минимальный из всех Res, то есть то, что мы ищем. Мы его обновляем по мере встечи более маленьких значений Res. Dec(x) - это операция уменьшения x на 1, то есть эквивалентно записи: x:=x-1 Спрашивай дальше. Если приоритет нужно учитывать, решение нужно дорабатывать. Подумай, как. Я тоже )). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
спасибо огромное тебе!!!! подумаю над решением и вопросами..
|
Гость |
Сообщение
#6
|
Гость |
а что такое Start?
например, Start:=false |
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а что такое Start? Start - логическая переменная, с помощью которой мы инициализируем Min жизненным значением, а не среднепотолочным. При самой первой встрече допустимой комбинации знаков мы заносим ее в Min (чтобы потом уточнять), а переменную Start сбрасываем в ложь.например, Start:=false Как я и полагал, учет приоритета операций потребовал вполне ощутимыз изменений, но далеко не катастрофических. Прога остается вполне узнаваемой. Кстати, в том варианте (выше), действительно есть ошибки - но все, прием заявок на плюс в репу закончен)). Общая логика проги сохранилась. Екатерина, ты можешь приблизительно прокомментировать, что там к чему? Хотя бы сказать, где там использована рекурсия - можешь? И зачем. Или вот такой совсем конкретный вопрос: какой цели служит массив Oper? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
Сообщение
#8
|
Гость |
массив Oper- массив знаков. так?
|
Гость |
Сообщение
#9
|
Гость |
рекурсия используется в самом конце программы? честно, затрудняюсь сказать для чего она нужна..
|
Текстовая версия | 29.04.2024 3:59 |