Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2010, 16:13   #1
tilperion777
Новичок
Джуниор
 
Регистрация: 11.04.2010
Сообщений: 1
По умолчанию скалярное произведение

даны поля:
Координата Х
Координата Y
Координата Z
Создать методы:
1.Сумма двух экземпляров класса.
2.Разница двух экземпляро вкласса.
3.Скалярное умножение двух вектров.
4.Произведение экземпляров класса на число.

запутался со скалярным произведением....
В чем ошибка...

Вот код:
Цитата:
unit Complex_class;
interface
uses SysUtils;
Type
Tvector=class(TObject)
fx,fy,fz:real;
constructor create(ax,ay,az:real);
procedure summa(chislo:Tvector);
procedure raznost(chislo:Tvector);
procedure skalar(chislo:Tvector);
procedure Skalarklass(chislo:Tvector);
function tilperion:string;
end;
implementation
constructor Tvector.Create(ax, ay, az:real);
begin
inherited Create;
fx:=ax;
fy:=ay;
fz:=az;
end;

Procedure Tvector.summa(chislo:Tvector);
begin
fx:= fx+chislo.fx;
fy:= fy+chislo.fy;
fz:= fz+chislo.fz;
end;

procedure Tvector.Raznost(chislo:Tvector);
begin
fx:= fx-chislo.fx;
fy:= fy-chislo.fy;
fz:= fz-chislo.fz;
end;

procedure Tvector.Skalar(chislo:Tvector);
var t:real;
begin
t:=(chislo.fx) +(chislo.fy) +(chislo.fz);
fx:=fx+fx*t;
fy:=fy+fy*t;
fz:=fz+fz*t;
end;

procedure Tvector.Skalarklass(chislo:Tvector) ;
var t:real;
begin
fx:=fx+fx*t;
fy:=fy+fy*t;
fz:=fz+fz*t;
end;

Function Tvector.tilperion:string;
begin
result:=FloatToStrF(fx,ffFixed,5,1) +' ' +FloatToStrF(fy,ffFixed,5,1)+' ' +FloatToStrF(fz,ffFixed,5,1)+'*i'
end;

end.



unit Complex_form;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Complex_class, StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button1: TButton;
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
RadioGroup1: TRadioGroup;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure RadioGroup1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
K1,K2:Tvector;
implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Memo1.Clear;
RadioGroup1.ItemIndex:=-1;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
If (Edit1.Text<>'')or(Edit2.Text<>'')o r(Edit3.Text<>'')or(Edit4.Text<>'')
or(Edit5.Text<>'')or (Edit6.Text<>'')then
begin
K1:=Tvector.Create(StrToFloat(Edit1 .text),StrToFloat(Edit2.text),StrTo Float(Edit3.Text));
K2:=Tvector.Create(StrToFloat(Edit4 .text),StrToFloat(Edit5.text),StrTo Float(Edit6.Text));
Memo1.Lines.add('Координаты вектора №1: '+K1.tilperion);
Memo1.Lines.add('Координаты вектора №2: '+K2.tilperion);
Case RadioGroup1.ItemIndex of

0:
begin
K1.summa(K2);
Memo1.Lines.Add('Сумма векторов равна: '+K1.tilperion);
Memo1.Lines.Add('__________________ _____________')
end;
1:
begin
K1.raznost(K2);
Memo1.Lines.Add('Разнось векторов равна: '+K1.tilperion);
Memo1.Lines.Add('__________________ _____________')
end;
2:
begin
K1.skalar(K2);
Memo1.Lines.Add('скалярное умножение двух векторов: '+K1.tilperion);
Memo1.Lines.Add('__________________ _____________')
end;
3:
begin
K1.Skalarklass(K2);
Memo1.Lines.Add('Произведения экземпляра класса на скаляр: '+K1.tilperion);
Memo1.Lines.Add('__________________ _____________')
end;
end;
K1.Free;
K2.Free
end

else
messageDlg('Не введены данные',mtWarning,[mbOk],0);
end;

end.

Последний раз редактировалось tilperion777; 11.04.2010 в 16:18.
tilperion777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi скалярное произведение Annie Помощь студентам 5 24.03.2010 10:35
Скалярное произведение. Рекурсия. grave123 Общие вопросы C/C++ 0 20.12.2009 13:31
Вычислить произведение P кубов трех чисел a, b и c, если их сумма меньше нуля, произведение P модулей NoUserName Помощь студентам 3 01.03.2009 18:10
скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом katya36 Помощь студентам 15 20.12.2008 17:48