Vector(int r,int q);//конструктор з двома параметрами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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


Тема 2. Конструктори. Деструктори.

Мета: Розглянути принцип роботи конструктора (з параметрами за замовчуванням) і деструктора при роботі з об'єктом.

Індивідуальне завдання 1

Розробити програму, що дозволяє виконати сортування набору даних класичним бульбашковим методом і шейк ер-сортування. У програмі виконати порівняння ефективності сортування за часом.

Текст програми

#include <stdio.h>

#include <windows.h>

#include <conio.h>

#include <time.h>

int sheiker (int in[], int n);

int puz(int A[], int n);

void About ();

Void main ()

{

//----Ввод масива----

int nn=0;

int trudoemk1, trudoemk2;

int input [100];

int input2 [100];

char bb [80];

CharToOem ("\nВведите число элементов массива: ", bb);

printf("%s", bb);

scanf ("%d", &nn); //Узнаємо розмір масива

CharToOem ("\nВведите через пробел целые числа: ", bb);

printf("%s", bb);

for (int j=0; j<nn; j++) scanf ("%d", &input[j]); //Заповнення масиву

CharToOem ("\nВы ввели следующий массив: ", bb);

printf("%s", bb);

for (int mm=0; mm<nn; mm++)

{printf ("%d ", input[mm]); //Перевірка виводом масива на екран

input2[mm]=input[mm];} //Робить копію масива

printf ("\n");

clock_t before;

double elapsed;

before = clock();

trudoemk1 = sheiker(input, nn); //Сортування методом Шейкер-сортування

CharToOem ("Сравнений: ", bb);

printf("%s", bb);

printf ("%d", trudoemk1);

CharToOem ("\nРеальные затраты времени на выполнении сортировки, в секундах: ", bb);

printf("%s", bb);

printf ("%.3f\n\n", elapsed/CLOCKS_PER_SEC);

before = clock();

trudoemk2 = puz(input2, nn); //Сортування бульбашковим методом

CharToOem ("\nСравнений: ", bb);

printf("%s", bb);

printf ("%d", trudoemk2);

elapsed = clock()-before; //Виводить час витрачений на виконаня функції

CharToOem ("\nРеальные затраты времени на выполнении сортировки, в секундах: ", bb);

printf("%s", bb);

printf ("%.3f\n", elapsed/CLOCKS_PER_SEC);

getch();

}

//функція шейкер-сортування

int sheiker (int in[], int n)

{ int sravnen=0;

char bb [80];

CharToOem ("\n\nШейкер сортировка: ", bb);

printf("%s\n", bb);

int a, b, dd, i, lasta, lastb, swap;

for (a=lasta=0, b=lastb=n, dd=1; a < b; dd =!dd, a=lasta, b=lastb)

{

if (dd)

{

for (i=a,lastb=a; i<b; i++)

if (in[i] > in[i+1])

{

lastb = i;

swap = in[i]; in[i]=in[i+1]; in[i+1]=swap;

sravnen++;

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]); //Перевірка методом виводу масиву на екран

printf ("\n");

}

else sravnen++;

}

Else

{

for (i=b,lasta=b; i>a; i--)

if (in[i-1] > in[i])

{

lasta = i;

swap = in[i]; in[i]=in[i-1]; in[i-1]=swap;

sravnen++;

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]); //Перевірка методом виводу масиву на екран

printf ("\n");

}

else sravnen++;

}

}

CharToOem ("Отсортированный массив методом Шейкер-сортировки: \n", bb);

printf("%s", bb);

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]);

printf("\n");

return sravnen;

}

//функція сортування бульбашковим методом

int puz(int A[], int n)

{

char bb [80];

CharToOem ("Сортировка методом \"пузырька\": \n", bb);

printf("%s", bb);



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 109; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.239.46 (0.024 с.)