Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.05.2012, 19:48
Swd Swd вне форума
Прохожий
 
Регистрация: 28.04.2012
Сообщения: 3
Репутация: 10
По умолчанию Функция

Помогите пожалуйста со 2-ым заданием. Вообщем нужно завтра сдать лаб. раб., но я ни как не могу понять 2-ое задание.
1)Процедура
Вывести в порядке возрастания их кодов все строчные буквы латинского алфавита, имеющиеся в тексте.

Эту сделал.

2)Функция
Уточнить корень уровнения e^x-10x=0 на отрезке [a, b] методом половинного деления.

Это я вообще даже приблизительно не понимаю как сделать, и не успеваю.

3) Процедуру подключить как Unit, а функцию как отдельную библиотеку dll.

Это я думаю что сделаю.

Помогите пожалуйста.
Ответить с цитированием
  #2  
Старый 28.05.2012, 19:57
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Метод половинного деления вообще самый простой.
1. Подставляешь в уравнение a и b вместо x - если на отрезке есть решение и оно 1 (в общем случае - нечетное количество решений, но это лирика), то а будет больше нуля, а b - меньше (ну или наоборот, не суть важна, главное был переход через 0).
2. Делишь отрезок пополам a<c<b, получаешь 2 отрезка a,c и c,b. Проверяешь оба как в п.1, на одном будет переход через 0, на другом не будет.
Затем опять делишь тот отрезок где есть переход через 0 и проверяешь полученную пару, так до тех пор пока отрезок у тебя не станет меньше какой-то заданной длины.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
Swd (28.05.2012)
  #3  
Старый 28.05.2012, 20:06
Swd Swd вне форума
Прохожий
 
Регистрация: 28.04.2012
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо, ещё бы понять как это в код преобразовать
Может кто-нибудь сможет написать код к этой функции? Пожалуйста

Последний раз редактировалось Swd, 28.05.2012 в 20:15.
Ответить с цитированием
  #4  
Старый 29.05.2012, 00:17
Swd Swd вне форума
Прохожий
 
Регистрация: 28.04.2012
Сообщения: 3
Репутация: 10
По умолчанию

Завтра сдавать, помогите пожалуйста
Ответить с цитированием
  #5  
Старый 29.05.2012, 01:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Swd
Завтра сдавать, помогите пожалуйста

Ну что-то типа:
Код:
function F(x : Double) : Double;
begin
  // Здесь твоя функция
end;

function FindSolution(a, b, e : Double) : Double;
var
  Fa, Fb, Fc : Double;
begin
  Repeat
    Fa := F(a);
    Fb := F(b);
    Fc := F((a+b)/2);
    If Sigh(Fa) = Sign(Fc) Then a := (a+b)/2 Else b := (a+b)/2;
  Until Abs(Fc) < Abs(e);
end;

Здесь нет проверки, что решение существует. e - искомая точность. Лучше всего задавать отличной от 0, хотя и можно достаточно маленькой.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Swd (30.05.2012)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter