![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 10
|
![]()
Имеется вот такое задание:
Создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс RightAngled (прямоугольный), имеющий поле площади. Определить метод вычисления площади. Часть кода я выполнил но часть не могу понять как сделать. Помогите пожалуйста с методами изменения сторон и проверьте правильно ли сделан метод определения площади в производном классе. Вот то что я уже сделал: Сама программа: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Unit2; type TForm1 = class(TForm) LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; LabeledEdit3: TLabeledEdit; ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,b,c:currency; TR:TTriangle; RA:TRightAngled; begin ListBox1.Clear; A:=strtofloat(LabeledEdit1.Text); B:=strtofloat(LabeledEdit2.Text); C:=strtofloat(LabeledEdit3.Text); if (a<=0) and (b<=0) and (c<=0) then MessageDlg('Còîðîíà íå ìîæåò áûòü ìåíüøå íîëÿ èëè ðàâíà íîëþ',mtError,[mbOK],0) else begin TR:=TTriangle.Create(a,b,c); listbox1.Items.Add('P = '+floattostr(TR.PT(TR))); listbox1.Items.Add('<AC = '+floattostr(TR.AAC(TR))+'*'); listbox1.Items.Add('<AB = '+floattostr(TR.AAB(TR))+'*'); listbox1.Items.Add('<BC = '+floattostr(TR.ABC(TR))+'*'); RA:=TRightAngled.Create(a,b,c); if (TR.AAC(TR)=90) or (TR.AAB(TR)=90) or (TR.ABC(TR)=90) then begin RA.ST(RA); listbox1.Items.Add('S = '+floattostr(RA.FS)); end; RA.Destroy; TR.Destroy; end; end; end. а вот модуль: unit Unit2; interface uses SysUtils, Variants, Classes,Math; type TTriangle = class private FA,FB,FC:currency; public function PT(FTriangle:TTriangle):currency; function AAC(FTriangle:TTriangle):currency; function AAB(FTriangle:TTriangle):currency; function ABC(FTriangle:TTriangle):currency; Constructor Create(A,B,C:currency); Destructor Destroy; end; TRightAngled = class(TTriangle) private // public FS:currency; procedure ST(FTriangle:TTriangle); end; implementation function TTriangle.PT(FTriangle:TTriangle):c urrency; var R:currency; begin R:=FA+FB+FC; Result:=R; end; function TTriangle.AAC(FTriangle:TTriangle): currency; var R:currency; begin R:=RadToDeg(ArcCos((-sqr(FB)+sqr(FC)+sqr(FA))/(2*FA*FC))); Result:=R; end; function TTriangle.AAB(FTriangle:TTriangle): currency; var R:currency; begin R:=RadToDeg(ArcCos((-sqr(FC)+sqr(FB)+sqr(FA))/(2*FA*FB))); Result:=R; end; function TTriangle.ABC(FTriangle:TTriangle): currency; var R:currency; begin R:=RadToDeg(ArcCos((-sqr(FA)+sqr(FC)+sqr(FB))/(2*FB*FC))); Result:=R; end; Procedure TRightAngled.ST(FTriangle:TTriangle ); var R,P2:currency; begin P2:=(FA+FB+FC)/2; FS:=sqrt(p2*(p2-FA)*(p2-FB)*(p2-FC)); end; Constructor TTriangle.Create(a,b,c:currency); begin inherited Create; fa:=a; fb:=b; fc:=c; end; destructor TTriangle.Destroy; begin inherited Destroy; end; end. Заранее благодарю. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.04.2010
Сообщений: 205
|
![]()
Извини я не очень трезвый сегодня. Но мне кажется, что такие задачи решаются по принципу "от простого к сложному". Очень заморочено условие.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 10
|
![]()
Условие не я писал
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Наследование | notHaker | Общие вопросы Delphi | 5 | 24.05.2010 18:55 |
Наследование | Сергей089 | Помощь студентам | 6 | 07.02.2010 12:04 |
Наследование на C++ | dziga1989 | Помощь студентам | 5 | 22.10.2009 11:25 |
Наследование | alex_triton | Общие вопросы C/C++ | 0 | 19.10.2009 20:25 |
Наследование | Кирилл13 | Общие вопросы C/C++ | 1 | 11.11.2008 14:47 |