![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в делфи объявить комплексное число [D6, Win95/98]
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 наверняка есть библиотечки.