Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
436.18 Кб
Скачать

Індивідуальне завдання 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]