- •Звіт з навчальної практики з об’єктно-орієнтованого програмування
- •Індивідуальне завдання 1
- •Текст програми
- •Індивідуальне завдання 2
- •Текст програми
- •Індивідуальне завдання 3
- •Текст програми
- •Індивідуальне завдання 4
- •Текст програми
- •Індивідуальне завдання 5
- •Текст програми
- •Тема 2. Конструктори. Деструктори.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 3. Дружні функції і класи.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 4. Превантаження операцій.
- •Індивідуальне завдання 1
- •Текст програми
Індивідуальне завдання 5
Створити абстрактний тип даних – клас вектор, який має покажчик на int, число елементів і змінну стану. Визначити конструктор без параметрів, конструктор з параметром, конструктор із двома параметрами. Конструктор без параметрів виділяє місце для одного елемента і ініціалізує його в нуль. Конструктор з одним параметром, - розмір вектора, - виділяє місце і ініціалізує номером в масиві, конструктор із двома параметрами виділяє місце (перший аргумент) і ініціалізує другим аргументом. Деструктор звільняє пам'ять. Визначити функцію, яка присвоює елементу масиву деяке значення (параметр за замовчуванням), функцію, яка отримує певний елемент масиву. У змінну стану встановлювати код помилки, коли не вистачає пам'яті, виходить за межі масиву. Визначити функцію друку. Визначити функції складання, множення, віднімання, які виробляють ці арифметичні операції з даними цього класу і вбудованого int. Визначити методи порівняння: більше, менше або дорівнює. Передбачити можливість підрахунку числа об'єктів даного типу. Перевірити роботу цього класу.
Текст програми
#include <iostream.h>
#include <conio.h>
#include <math.h>
class Vector{
public:
int *a; // вказівник
int k; // оголошення змінної
void Set_Value();
void Get_Value();
void Print_Array();
// оператори
Vector *operator+(Vector v);
Vector *operator-(Vector v);
Vector *operator*(Vector v);
bool operator<(Vector v);
bool operator>(Vector v);
bool operator==(Vector v);
Vector(); // конструктор без параметрів
Vector(int r);//конструктор з одним параметром
Vector(int r,int q);//конструктор з двома параметрами
~Vector(); // деструктор
};
Vector::Vector(){//обнуляємо
a=new int[0];
a[0]=0;
}
Vector::Vector(int r){//задаємо нове значення
a=new int[r];
for(int i=0;i<r;i++) a[i]=0;
k=r;//присвоюємо нове значення
}
Vector::Vector(int r,int k){
a=new int[r];
for(int i=0;i<r;i++) a[i]=k;
this->k=r;
}
Vector::~Vector(){
for(int i=0;i<k;i++) delete(a);
}
void Vector::Set_Value(){
int b,i;
cout<<"Enter index of array-> "; cin>>i;
cout<<"Enter value of elements->"; cin>>b;
a[i]=b;
}
void Vector::Get_Value(){
int i;
cout<<"Enter index of array-> "; cin>>i;
cout<<"You elemet is->"<<a[i]<<"\n";
}
void Vector::Print_Array(){
cout<<"You have this array\n";
for(int i=0;i<k;i++) cout<<a[i]<<"\t";
cout<<"\n";
}
Vector *Vector::operator+(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return 0;
} else{
Vector *tmp=new Vector(k);
for(int i=0;i<k;i++) tmp->a[i]=a[i]+(v.a[i]);
return tmp;
}
}
Vector *Vector::operator-(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return 0;
} else{
Vector *tmp=new Vector(k);
for(int i=0;i<k;i++) tmp->a[i]=a[i]-(v.a[i]);
return tmp;
}
}
Vector *Vector::operator*(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return 0;
} else{
Vector *tmp=new Vector(k);
for(int i=0;i<k;i++) tmp->a[i]=a[i]*(v.a[i]);
return tmp;
}
}
bool Vector::operator<(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return false;
} else{
float v1=0,v2=0;
for(int i=0;i<k;i++) v1+=a[i]*a[i];
for(int i=0;i<k;i++) v2+=v.a[i]*v.a[i];
if(sqrt(v1)<sqrt(v2))
return true; else
return false;
}
}
bool Vector::operator>(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return false;
} else{
float v1=0,v2=0;
for(int i=0;i<k;i++) v1+=a[i]*a[i];
for(int i=0;i<k;i++) v2+=v.a[i]*v.a[i];
if(sqrt(v1)>sqrt(v2))
return true; else
return false;
}
}
bool Vector::operator==(Vector v){
if(k!=v.k) {
cout<<"Error, vectors must be identical size";
return false;
} else{
float v1=0,v2=0;
for(int i=0;i<k;i++) v1+=a[i]*a[i];
for(int i=0;i<k;i++) v2+=v.a[i]*v.a[i];
if(sqrt(v1)==sqrt(v2))
return true; else
return false;
}
}
void main(){
Vector *v1=new Vector();
Vector *v2=new Vector(4);
Vector *v3=new Vector(10,5);
v3->Set_Value();
v3->Get_Value();
v3->Print_Array();
getch();
}
Результат роботи програми:
Рисунок 1.5
