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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2008, 19:23   #1
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
Смех (+,-,*,/)Расстановка знаков

Привет всем!!!!
Тут такая задачка хитрая!!!

Дана последовательность из N чисел N<=20
расставить знаки (+,-,*,/)между числами так чтобы в результате полечилось число D
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Старый 13.04.2008, 10:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

МаксимNEWProgramm, учитесь пользоваться поиском.
Здесь на форуме эта задача уже была решена:
значение получившегося выражения должно быть равно заданному целому S
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.04.2008, 10:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Хотя нет, погорячился... там была попроще задачка - только на знаки "+" и "-" ;-(
А тут ещё добавляются умножение и деление...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2008, 19:33   #4
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
По умолчанию

Ну что никто не снает? . посоветуйтехотябы учебник ,где может быть инфа или аналагичные ей задачи.Заранее спасибо
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Старый 16.04.2008, 22:08   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я стопудово уверен, что у этой задачи есть достаточно красивое решение через рекурсию - типа перебираешь знаки по одному берёшь первое число и вызываешь эту же функцию перебора для оставшихся чисел... Но, честно говоря, красиво думать после тяжёлого трудового дня дураков нет ;-))
Поэтому предлагаю решение простое как топор!
1) берёшь (или пишешь сам) любой парсер (калькулятор) строки - на вход ему два массива - один с числами, второй массив - с математическими операциями, твоя функция должна посчитать выражение, учитываея более высокий приоритет операция умножения/деления.... И вернуть число.

2) написать простейшую программку перебора (насколько я помню комбинаторику, вариантов всего будет 4^(N-1) (четыре в степени N минус 1)
ну типа + + ...+ +
потом + + ... + -
потом + + ... + /
потом + + ... + *
потом + + ... - +
потом + + ... - -
и т.д.
Если вычиление на каком-то этапе вернуло число, равное В - выход.
Если перебрали все варианты - то сообщение "Решения задачи нет".
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2008, 17:04   #6
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
По умолчанию

Спасибо !
Код сам напишу.
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление не нужных знаков после запятой. Alar Общие вопросы Delphi 4 31.05.2012 19:59
кол-во знаков после запятой в TEdit Petrucci Общие вопросы Delphi 9 04.07.2008 13:15
Определить число Y знаков в факториале от X KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 8 24.03.2008 17:10
Подсчет знаков Dizman Помощь студентам 4 31.01.2008 22:27
Ограничение знаков после запятой,StringGrid Gorin Компоненты Delphi 9 20.09.2007 16:10