Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в делфи объявить комплексное число [D6, Win95/98]


Страницы:   1 2

Ionv ©   (2002-09-26 07:21:00) 

Нужно решить задачу с комплексными числами, а я незнаю как их объявить. Помогите кто может. СПАСИБО!!!


Separator   (2002-09-26 11:35:00) [21]

>TTCustomDelphiMaster
тебе как весь юнит VarCmplx или тока это:


TComplexVariantType = class(TPublishableVariantType, IVarStreamable)
protected
function LeftPromotion(const V: TVarData; const Operator: TVarOp;
out RequiredVarType: TVarType): Boolean; override;
function RightPromotion(const V: TVarData; const Operator: TVarOp;
out RequiredVarType: TVarType): Boolean; override;
function GetInstance(const V: TVarData): TObject; override;
public
procedure Clear(var V: TVarData); override;
function IsClear(const V: TVarData): Boolean; override;
procedure Copy(var Dest: TVarData; const Source: TVarData;
const Indirect: Boolean); override;
procedure Cast(var Dest: TVarData; const Source: TVarData); override;
procedure CastTo(var Dest: TVarData; const Source: TVarData;
const AVarType: TVarType); override;

procedure BinaryOp(var Left: TVarData; const Right: TVarData;
const Operator: TVarOp); override;
procedure UnaryOp(var Right: TVarData; const Operator: TVarOp); override;
function CompareOp(const Left: TVarData; const Right: TVarData;
const Operator: Integer): Boolean; override;

procedure StreamIn(var Dest: TVarData; const Stream: TStream);
procedure StreamOut(const Source: TVarData; const Stream: TStream);
end;



TTCustomDelphiMaster   (2002-09-26 11:26:00) [22]

Уважаемые коллеги!
У кого есть D6, приведите пожалуйста здесь кусочек кода, в котором объявлен класс комплексного числа. А мы посмотрим почему господа из Borland не сделали его с помощью record.


qube   (2002-09-26 11:18:00) [23]

Позвольте возразить.
Методы классов -- это и есть в первую очередь операции НАД объектом.


Юрий Зотов   (2002-09-26 11:00:00) [24]

Там, где надо - да, а где не надо - нет. Посмотрите модуль Math, например.

Объект нужен тогда, когда от кода требуется некая активность. А от числа она не требуется, оно само по себе ничего делать не должно, операции проводятся НАД ним, а не им самим. Так ведь можно дойти до того, что и integer сделать объектом. Смысл?

Умная фраза гласит - "не плодите сущностей без необходимости".


andrey_pst   (2002-09-26 10:52:00) [25]

В смысле - "головная боль" ? Это-ж просто ООП. В Object Pascal куда ни плюнь - объекты.


Юрий Зотов   (2002-09-26 10:45:00) [26]

А зачем же целый объект городить? Это же сколько лишнего-то получится... лишняя память, лишний код, создавать, уничтожать, следить за корретностью ссылок... Сплошная головная боль.

А ведь задача этого не требует. Разве record недостаточно?


TTCustomDelphiMaster   (2002-09-26 10:14:00) [27]

Anatoly Podgoretsky © (26.09.02 09:51)

Почему не надо?
Насколько я помню в этом классе свойство содержащее реальную часть называется Real.

Вы думаете что в исходниках D6 часто встречается Real? И потом если искать с помощью средств Delphi - Search - Find in files, то найти можно за 1 мин.


Anatoly Podgoretsky   (2002-09-26 09:51:00) [28]

По real не надо :-)


qube   (2002-09-26 09:43:00) [29]

VarComplexCreate


TTCustomDelphiMaster   (2002-09-26 09:17:00) [30]

В D6 класс комплексных чисел уже реализован. Только я забыл в каком модуле. Попробуйте провести поиск по словам: complex, compl, real, TComplex...


andrey_pst   (2002-09-26 07:48:00) [31]

пардон :)
с утра мозги где-то далеко...


MBo   (2002-09-26 07:42:00) [32]

>andrey_pst
> x : integer; // целая часть
Не целая, а реальная, число в общем случае, конечно,вещественное
> y : real; // комплексная часть
мнимая часть


andrey_pst   (2002-09-26 07:37:00) [33]

//////////////////////////////////////
// класс комплексных чисел

type
TComplex = class(TObject)
private
x : integer; // целая часть
y : real; // комплексная часть
public
constructor Create();
...
...
...
Destructor Free();
end;

implementation

constructor TComplex.Create();
befin
Inherited Create();
x := 0;
y := 0;
end;

destructor TComplex.Free();
befin
x := 0;
y := 0;
Inherited;
end;

///////////////////////////////////
// Пользование:
procedure TForm1.Button1Click(Sender: TObject);
var
c : TComplex;
begin
c := TComplex.Create();
// ну вот у тебя есть свой объект - комплексное число
// делай с ним что хочешь
...
...
c.Free;
end;


Esu   (2002-09-26 07:35:00) [34]

Вот тут мне всегда хочется сказать ?++, но я не скажу ;)


MBo   (2002-09-26 07:25:00) [35]

придется ввести записи или классы с полями RE и IM, и создать соответственно функции для действий с ними или методы. На torry наверняка есть библиотечки.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо