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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.05.2012, 22:57
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию Нахождение корней

Здравствуйте ,алгоритм задания на картинке , подскажите в чем ошибка .

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
 
type
  TForm1 = class(TForm)
    Chart1: TChart;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Series1: TLineSeries;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
 
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
type
t=function(x:extended):extended ;
function y(x:extended):extended;
begin
y:=2*x*x+x;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.clear;
edit2.clear;
edit3.clear;
edit4.clear;
label5.caption:='';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var x1,x0,a,b,shag,c,pog,x:extended;
begin
  a:=strtofloat(edit1.text);
  b:=strtofloat(edit2.text);
  shag:=strtofloat(edit3.text);
  pog:=strtofloat(edit4.text);
    series1.clear;
    x0:=a;  x1:=b;
    x:=(x0+x1)/2;
    repeat
    series1.AddXY(x0,y(x0),'',clblue);
    x0:=x0+0.1;   // шаг
    repeat
    series1.AddXY(x1,y(x1),'',clred);
     x1:=x1+0.1;
    if (y(x0))*(y(x))>0 then  (x1=x)  else
     (x0=x)  ;
 
     c:=(x0+x1)/2;
     label5.caption:=+floattostr(c);
     until (x1-x0)<0.000000001 ;
end;
       end.
Изображения
Тип файла: jpg 22.JPG (84.0 Кбайт, 19 просмотров)

Последний раз редактировалось qpmr, 24.05.2012 в 23:21.
Ответить с цитированием
  #2  
Старый 24.05.2012, 22:58
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Смотря каково её проявление.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 24.05.2012, 22:59
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию

[Error] Unit1.pas(71): Statement expected, but expression of type 'Boolean' found
При задании условия ..
Ответить с цитированием
  #4  
Старый 24.05.2012, 23:03
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
1
2
if (y(x0))*(y(x))>0 then  (x1=x) and (y(x1)=y(x)) else
    (x0=x) and (y(x0)=y(x)) ;
Вот этого чтоли?
Ну так конечно. And - логическа операция, а не объединение действий.
Вообще смысл не очень понял. Перевожу написанное на русский язык:
"Если y(x0)*y(x) больше 0 то (x1 равно x) ^ (y(x1) равно y(x)) иначе ..."
Ну равно x и y(x1), компьютеру-то что делать?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 24.05.2012, 23:07
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

предположу, что где-то тут, что-то не так...
Код:
1
2
if (y(x0))*(y(x))>0 then  (x1=x) and (y(x1)=y(x)) else
     (x0=x) and (y(x0)=y(x)) ;
предположу, что ТС вовсе не хочется узнать значение логического выражения
Код:
1
(x1=x) and (y(x1)=y(x))
или
Код:
1
(x0=x) and (y(x0)=y(x))
а что на самом деле надо?
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #6  
Старый 24.05.2012, 23:09
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию

так ведь в алгоритме именно так и написано ..
Ответить с цитированием
  #7  
Старый 24.05.2012, 23:12
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Так надо отличать в алгоритме условия и нахождение значения переменных.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #8  
Старый 24.05.2012, 23:18
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию

А как отличить , по алгоритмам мы еще не писали ничего , получается функции нужно поубирать ?
Ответить с цитированием
  #9  
Старый 27.05.2012, 11:09
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию

Вот поправил , но не рисует почему-то..

Последний раз редактировалось qpmr, 31.05.2012 в 22:24.
Ответить с цитированием
  #10  
Старый 31.05.2012, 22:25
qpmr qpmr вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 27
Репутация: 10
По умолчанию

Наконец удалось . частично . Считает только один корень и почему -то не выводит в chart !
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Chart1: TChart;
    Series1: TLineSeries;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
Function f(x: extended): extended;
Begin
f:=x*x+x+1;
End;
 
procedure TForm1.Button1Click(Sender: TObject);
var a,b,e,c,x,h: extended;
 
begin
series1.clear;
 a:=strtofloat(edit1.Text);
 b:=strtofloat (edit2.Text);
 e:=strtofloat(edit4.Text);
 h:=strtofloat(edit3.text);
 repeat
   c:=(a+b)/2;
   if f(a)*f(c)>0 then
 
       a:=c
         else
         b:=c;
 
   until abs(b-a)<e ;
    label1.caption:='Корень = '+floattostr(c);
x:=с;
repeat
x:=x+h;
  series1.AddXY(x,f(x));
   until abs(b-a)>=e;
  end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Clear;edit2.Clear;edit3.Clear;edit4.Clear;
 
end;
 
end.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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