![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Екатерина7 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
помогите, пожалуйста, разобраться с задачей
Для заданного набора целых чисел без знака расставить между ними арифметические знаки сложения, деления, и умножения так, чтобы результат вычисления полученного арифметического выражения был минимальным. Число знаков умножения в этом выражении должно быть равным или на 2 больше, чем знаков сложения, а знаков сложения- равно или на 1 больше, чем знаков деления. В наборе должно быть не менее четырех чисел, а в полученном выражении должны присутствовать все три арифметических знака. (умножение и деление имеют приоритет перед операциями сложения и вычитания, деление производится с остатком) Сообщение отредактировано: Екатерина7 - 23.11.2009 18:16 |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Екатерина, перенести тему в "Задачи на заказ"? Или Вы попробуете что-нибудь сделать и задать конкретные вопросы?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Екатерина7 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Согласия на перенос, как я понял, не поступало... Переношу в Задачи.
Екатерина7, ты можешь высказать свои соображения по поводу задач? Любые, просто, что ты думаешь. Если есть начало написания кода - еще лучше. И еще: ты работала раньше а рекурсией? Ответь, пожалуйста. По первой задаче: при выполнении операций нужно ли соблюдать правило, что умножение и деление имеют приоритет перед сложением? Вторая задача тоже интересная. Ты все же определись с тем, хочешь ли ты решать сама (с помощью Форума - лично я с удовольствием включусь в обсуждение, задачи приятные), или ты хочешь заплатить. Цена нефиксирована, как договоритесь (если кто-то возьмется). Если же все же ты предпочтешь первый вариант, то я буду настаивать на разделении темы на две (правила раздела Задачи, п.6). Оставь в этой теме, скажем, первую задачу, а во второй запость вторую. И позаботься о хороших названиях (Правила Форума, п.4). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
![]()
Сообщение
#5
|
Гость ![]() |
соображений никаких нет.. с рекурсией не работала.. все таки остановлюсь на том, чтобы заплатить.
|
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Остается открытым вопрос про приоритеты операций. Нужно его учитывать или нет? Пожалуйста, уточни. Решения отличаются довольно сильно.
Решение без приоритетов несложное. Собственно, вот оно.. const Я его слишком придирчиво не проверял (не на чем, не считать же на бумажке)). Нашедшему существенную ошибку - плюс в репу)). Катя, спрашивай, что неясно. Его можно в принципе переделать и на приоритеты.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
я же вроде там в скобочках дописала..
(умножение и деление имеют приоритет перед операциями сложения и вычитания, деление производится с остатком) Добавлено через 5 мин. еще несовсем понятно эта строчка Res,Min: tNum; и вот это Dec(Ad); Добавлено через 1 мин. Dec(Ad);- это результат операции какой-то? |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
я же вроде там в скобочках дописала.. Извиняюсь, не заглянул наверх (лучше говорить по ходу темы)Цитата еще несовсем понятно эта строчка Res,Min: tNum; Res - это сам результат выполнения операций. В самом начале он равен первому числу, потом "накапливается" по мере выполнения. и вот это Dec(Ad); Dec(Ad);- это результат операции какой-то? Min - это минимальный из всех Res, то есть то, что мы ищем. Мы его обновляем по мере встечи более маленьких значений Res. Dec(x) - это операция уменьшения x на 1, то есть эквивалентно записи: x:=x-1 Спрашивай дальше. Если приоритет нужно учитывать, решение нужно дорабатывать. Подумай, как. Я тоже )). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
спасибо огромное тебе!!!! подумаю над решением и вопросами..
|
Гость |
![]()
Сообщение
#11
|
Гость ![]() |
а что такое Start?
например, Start:=false |
Unconnected |
![]()
Сообщение
#12
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Присваивание логической переменной значения false.
Задача навскидку курса 2-3, и не знать булевых переменных? О_о Сообщение отредактировано: Unconnected - 23.11.2009 22:16 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
а что такое Start? Start - логическая переменная, с помощью которой мы инициализируем Min жизненным значением, а не среднепотолочным. При самой первой встрече допустимой комбинации знаков мы заносим ее в Min (чтобы потом уточнять), а переменную Start сбрасываем в ложь.например, Start:=false Как я и полагал, учет приоритета операций потребовал вполне ощутимыз изменений, но далеко не катастрофических. Прога остается вполне узнаваемой. Кстати, в том варианте (выше), действительно есть ошибки - но все, прием заявок на плюс в репу закончен)). Общая логика проги сохранилась. Екатерина, ты можешь приблизительно прокомментировать, что там к чему? Хотя бы сказать, где там использована рекурсия - можешь? И зачем. Или вот такой совсем конкретный вопрос: какой цели служит массив Oper? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
![]()
Сообщение
#14
|
Гость ![]() |
массив Oper- массив знаков. так?
|
Гость |
![]()
Сообщение
#15
|
Гость ![]() |
рекурсия используется в самом конце программы? честно, затрудняюсь сказать для чего она нужна..
![]() |
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
массив Oper- массив знаков. так? Так. Вопрос был, для чего он используется.рекурсия используется в самом конце программы? честно, затрудняюсь сказать для чего она нужна.. Нет не в конце. Посмотри внимательно, пожалуйста. В программе есть три места, где применяется рекурсия.Катя, ты забыла пароль? Его нужно восстановить? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
нет, спасибо, не нужно восстанавливать..
Добавлено через 1 мин. здесь применяется: Oper[n]:='+'; Inc(Ad); Res:=Res0+a; Count; Dec(Ad); ? |
Unconnected |
![]()
Сообщение
#18
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ну как бы да, применяется здесь... Т.е. процедура вызывает себя из себя же.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#19
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Да. Достаточно было указать на три вызова процедуры Count, которые производятся изнутри самой процедуры. Видишь их? один для +, второй для *, третий для /. Смысл слова "рекурсия" именно в этом и состоит. Как "ре-монт" - это "повторный монтаж", так и "ре-курсия" - это "повторный заход".
Дальше, сам отвечу на свой вопрос. Массив Oper (вместе с OperMin) служит одной-единственной цели: распечатать расставленные знаки в конце. Для самой функциональности, то есть для отыскания нужной комбинации знаков, он не нужен. Это я хотел от тебя услышать. Похоже, что интереса к задаче у тебя так и не появилось. Мне начинает надоедать вытягивать из тебя по слову. Похоже, что мне это нужно больше тебя.. Когда уже в России научатся (и захотят) учиться?.. Лови решение этой задачи. const На TP не проверял, только на FPC. Разбирайся. Спрашивай. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#20
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
спасибо большое!!!
|
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 3:42 |