Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (11.12.2011 в 18:57)
Эту задачу лучше решать в отдельной функции, она потребует своего собственного цикла. Такие задачи решаются оптимизационными алгоритмами, т.е. вы приходите к решению последовательно. Берете произвольное начальное значение числа и помножаете его на себя три раза, сравнивая с результатом - не подходит, прибавляете к исходному произвольному числу небольшое значение (варьируете число), повторяете процедуру, опять не подходит, смотрите разницу между исходным числом и результатами. Если после прибавления результат получился еще дальше от исходного числа - вы идете не в ту сторону, если результат ближе, значит вы на верном пути, нужно еще увеличить значение. Повторяя эти операции вы все ближе и ближе будете подходить к тому, что умножение вашего числа три раза на себя будет приближаться к нужному вам результату, чтобы его не проскочить, вам нужно будет уменьшать варьируемое значение, пока оно не станет совсем маленьким, а получаемый результат практически перестанет изменяться и очень близко подойдет к нужному вам числу. Тогда можно прекращать поиск вы получите те самые 2.9999999999999999999999999999967, которые выдает калькулятор и которые очень близки к 3. Этот недостающий хвостик большого значения иметь не будет, так как ошибка, которая накапливается в сопроцессоре еще больше (он многие задачи аналогично решает).
Алогоритмов таких поисков очень много, но все они действуют по указанной выше схеме, только порядок изменения приращения у них разный.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: