Звіт з лабораторної роботи №7

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Не вказано
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Об’єктно-орієнтоване програмування
Група:
ПІ-11

Частина тексту файла (без зображень, графіків і формул):

Міністерство науки і освіти України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій кафедра програмного забезпечення Звіт з лабораторної роботи №7 з дисципліни “Об’єктно-орієнтоване програмування ” Тема: Наслідуванням класів з використанням віртуальних функцій Завдання Створити об’єкти для роботи з класами згідно завдання, використовуючи наслідування, абстрактні класи, віртуальні функції. Роботу з похідними об’єктами здійснювати через вказівник типу базового класу. Варіанти Робота з плоскими фігурами: трикутник, квадрат, коло. Для даних об’єктів, базовим класом являється клас “ плоска фігура ”. Необхідно використати віртуальні функції для обчислення площ і визначення належності точок фігурам. Необхідно ввести N точок Pi(x, y), N>= 3 Вивести назви і площі фігур, яким належать введені точки Pi(x, y) Відсортувати фігури в порядку спадання значень їх площ. Текст програми //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include<math.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; class Fihyru { public: virtual double square(int,int,int,int,int,int,int,int){return 0;} void sort(double Spr,double Str,double Sel); }; class Priamokytnuk :public Fihyru { public: int x1,x2,x3,y1,y2,y3; double Spr; double square(int x1,int x2,int x3,int y1,int y2,int y3,int,int); }; class Trukytnuk :public Fihyru { public: int x1,x2,x3,y1,y2,y3; double Str; double square(int x1,int x2,int x3,int y1,int y2,int y3,int,int); }; class Elips:public Fihyru { public: int x1,x2,x3,x4,y1,y2,y3,y4; double Sel; double square(int x1,int x2,int x3,int x4,int y1,int y2,int y3,int y4); }; double Priamokytnuk::square(int x1,int x2,int x3,int y1,int y2,int y3,int,int) { double Sa,Sb,S; Sa=sqrt(pow((x1-x2),2)+pow((y1-y2),2)); Sb=sqrt(pow((x2-x3),2)+pow((y2-y3),2)); S=Sa*Sb; return S; } double Trukytnuk::square(int x1,int x2,int x3,int y1,int y2,int y3,int,int) { double Sa,Sb,Sc,ppr,S; Sa=sqrt(pow((x1-x2),2)+pow((y1-y2),2)); Sb=sqrt(pow((x2-x3),2)+pow((y2-y3),2)); Sc=sqrt(pow((x1-x3),2)+pow((y1-y3),2)); ppr=(Sa+Sb+Sc)/2; S=sqrt(ppr*(ppr-Sa)*(ppr-Sb)*(ppr-Sc)); return S; } double Elips::square(int x1,int x2,int x3,int x4,int y1,int y2,int y3,int y4) { double S,Sb,Sa; Sa=sqrt(pow((x1-x2),2)+pow((y1-y2),2)); Sb=sqrt(pow((x3-x4),2)+pow((y3-y4),2)); S=3.14*sqrt(pow(Sa,2)+pow(Sb,2))/2; return S; } void Fihyru::sort(double Spr,double Str,double Sel) { if((Spr>=Str)&&(Spr>=Sel)) { Form1->Label1->Caption=Form1->Label1->Caption+"Прямокутник S="+FloatToStr(Spr); if(Str>=Sel) { Form1->Label2->Caption=Form1->Label2->Caption+"Трикутник S="+FloatToStr(Str); Form1->Label3->Caption=Form1->Label3->Caption+"Еліпс S="+FloatToStr(Sel); } else { Form1->Label2->Caption=Form1->Label2->Caption+"Еліпс S="+FloatToStr(Sel); Form1->Label3->Caption=Form1->Label3->Caption+"Трикутник S="+FloatToStr(Str); } } else if((Str>=Spr)&&(Str>=Sel)) { Form1->Label1->Caption=Form1->Label1->Caption+"Трикутник S="+FloatToStr(Spr); if(Spr>=Sel) { Form1->Label2->Caption=Form1->Label2->Caption+"Прямокутник S="+FloatToStr(Str); Form1->Label3->Caption=Form1->Label3->Caption+"Еліпс S="+FloatToStr(Sel); } else { Form1->Label2->Caption=Form1->Label2->Caption+"Еліпс S="+FloatToStr(Sel); Form1->Label3->Caption=Form1->Label3->Caption+"Прямокутник S="+FloatToStr(Str); } } } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {Label4->Caption="Введіть координати точок прямокутника:"; Label5->Caption="Введіть координати точок трикутника:"; Label6->Caption="Введіть координати точок еліпса:"; Label7->Caption="Відсортoвані фігури в порядку спадання значень їх площ"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Fihyru M; Fihyru *pP=new Priamokytnuk; Fihyru *pT=new Trukytnuk; Fihyru *pK=new Elips; Priamokytnuk p; Trukytnuk t; Elips e; p.x1=StrToInt(Edit1->Text); p.y1=StrToInt(Edit2->Text); p.x2=StrToInt(Edit3->Text); p.y2=StrToInt(Edit4->Text); p.x3=StrToInt(Edit5->Text); p.y3=StrToInt(Edit6->Text); p.Spr=pP->square(p.x1,p.x2,p.x3,p.y1,p.y2,p.y3,0,0); t.x1=StrToInt(Edit7->Text); t.y1=StrToInt(Edit8->Text); t.x2=StrToInt(Edit9->Text); t.y2=StrToInt(Edit10->Text); t.x3=StrToInt(Edit11->Text); t.y3=StrToInt(Edit12->Text); t.Str=pT->square(t.x1,t.x2,t.x3,t.y1,t.y2,t.y3,0,0); e.x1=StrToInt(Edit13->Text); e.y1=StrToInt(Edit14->Text); e.x2=StrToInt(Edit15->Text); e.y2=StrToInt(Edit16->Text); e.x3=StrToInt(Edit17->Text); e.y3=StrToInt(Edit18->Text); e.x4=StrToInt(Edit19->Text); e.y4=StrToInt(Edit20->Text); e.Sel=pK->square(e.x1,e.x2,e.x3,e.x4,e.y1,e.y2,e.y3,e.y4); M.sort(p.Spr,t.Str,e.Sel); } //--------------------------------------------------------------------------- Результат виконання програми  Висновок: під час виконання лабораторної роботи ми вивчили наслідування класів з використанням віртуальних функцій
Антиботан аватар за замовчуванням

31.03.2013 13:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!