![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
ZimAN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
Помогите пожалуйста. Вот такая задача:
Даны действительные числа x, Е (x<>0, E > 0). Вычислить с точностью E: ![]() Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем E, - это и все последующие слагаемые можно уже не учитывать. Помогите пожалуйста, 2 дня мучаюсь, ничего не выходит... Заранее благодарен. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
А в чём проблема то?
Это сообщение отредактировал(а) source777 - 23.1.2008, 01:36 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
В том, что во-первых, здесь - не Дельфи, а Паскаль... Переписывать все библиотеки тоже будешь, чтобы твоя программа хотя бы компилировалась? А во-вторых, ZimAN, не надо считать факториалы и степень каждый раз с начала и до конца - тысячу раз говорилось: ДОМНОЖАЕМ на очередной итерации текущий член на <что-то>... Вот выведи, что есть это самое <что-то>, а потом берись за реализацию... |
|||
|
||||
ZimAN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
вот что у меня выходит, знаю что это не правильно... помогите, исправьте пожалуйста мои ошибки... єто запускается, но Результат всегда равен 0. Это сообщение отредактировал(а) ZimAN - 23.1.2008, 15:54 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
ZimAN, а чем тебя мой код не устаивает? Убери {$APPTYPE CONSOLE} и будет тебе Паскаль, а не Delphi... Возитесь с этим Паскалем, как с писанной торбой, пора уж забыть о нём...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
mmvds |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: нет Всего: 6 |
Угу, у тебя всегда к=0, да и факториал не считался.
Вот отредактировал твой код, вроде работает ![]() И кстати longint может хранить корректное значение только до 12 факториал = 479001600, т.е. всего при вычислениях будет не более 12 итераций, поэтому не для всех e и x будет работать прога. Например, e=0.1, x=1.4 - работает ![]()
Добавлено через 8 минут и 21 секунду Объясните плиз, как формулу выше преобразовали до такого:
|
||||
|
|||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
разделил k+1 член ряда на k-ый... Кстати ещё лучше будет так:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
ZimAN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
спасибо за помощь, но меня интересует еще один вопрос:
в условии задачи сказано, что "считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем Е, - это и все последующие слагаемые можно уже не учитывать" . Но при перепроверке на листке бумаги и обнаружил , что программа не отбрасывает первое слагаемое , которое является меньшим чем Е.. В условии пишет ----- """ - это и все последующие не учитывать""", то есть если ввести Е=1 и Х=1, то в итоге результат Rez=1.5, а не 1. 0,5 , которое является меньшим чем Е(1) не отбрасывет ... как это исправить ? если что-то путаю, то извините.. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Мля, ZimAN, я для кого правильный код писал? что ты тупишь?
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: нет Всего: 6 |
Спокойнее, для начала тоже проверьте на бумажке, подставляя в исходную формулу. x=1 E=1 K=0 Первое слагаемое=1, сумма=1; 1 не меньше 1 (по условию именно < а не <=), значит считаем далее K=1 Второе слагаемое=0.5, сумма=1,5; 0,5<1, значит результат найден - 1,5 Что собственно и считает моя прога, у Вас source777, результат равен 1.
С каких пор 1<1 - истина? |
|||
|
||||
mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: нет Всего: 6 |
А все, извиняюсь, еще не проснулся
![]() Если есть желание, переставь местами строчки R:=exp(2*k*ln(x))/(exp(k*ln(2))*Factorial(k)); и Rez:=Rez+R; и Rez:=1 замени на Rez:=0 Код source777 действительно правильнее, т.к. позволяет считать с большим К, затрачивая меньше вычислений, лучше использовать его.
Действительно ![]() Это сообщение отредактировал(а) mmvds - 24.1.2008, 09:20 |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Вот не устраивает, и все тут. Во-первых, ты когда исправляешь - хотя бы говорил об этом, а то втихую поправил и все тут, и мой пост как-бы вообще ни при чем, да? А во-вторых, если уж ты снизошел до ответов в разделе Паскаль, то будь добр поставить себе компилятор Паскаля (а не Дельфи в консольном режиме) и откомпилировать то, что ты привел. Получилось? Я тебе безо всякого компилятора скажу, что НЕТ.
|
|||
|
||||
source777 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Хотя я думаю, что это:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||||
|
|||||||||
orthrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 400 Регистрация: 30.10.2007 Где: г. Усть-Илимск(Ир кутская обл.) Репутация: нет Всего: 16 |
Мой профиль->Отображение разделов->Там дальше наверное поймешь -------------------- У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |