Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OOP7

.docx
Скачиваний:
12
Добавлен:
07.02.2016
Размер:
37.16 Кб
Скачать

Міністерство освіти і науки України

Запорізький національний технічний університет

Кафедра програмних засобів

Звіт

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

«Введення в узагальнене програмування»

Виконав

ст. гр. КНТ-423 В.В. Білевський

Прийняв

ст. викл. Н. О. Миронова

Запоріжжя, 2014

7.1Мета роботи: Навчитись використовувати шаблони при розробці програм.

7.2 Завдання до роботи: Виконати завдання з лабораторної роботи № 1, де тип елементу заданої структури даних довільний. Використати шаблонні функції.

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

#include <iostream>

#include <conio.h>

#include <cmath>

using namespace std;

template <class Q>

class Vector{

Q x,y,z;

public:

Vector();

Vector(Q a, Q b, Q c);

void Vvod();

void Dlina();

void Show(){cout << x <<' '<< y<<' '<< z<<endl;}

template <typename I>

friend Vector<I> operator + (Vector<I> &a, Vector<I> &c);

template <typename I>

friend Vector<I> operator + (I num, Vector<I> &a);

template <typename I>

friend Vector<I> operator - (Vector<I> &a, Vector<I> &c);

template <typename I>

friend Vector<I> operator - (Vector<I> &a, I num);

template <typename I>

friend Vector<I> operator * (Vector<I> &a, Vector<I> &c);

template <typename I>

friend Vector<I> operator * (Vector<I> &a, I num);

template <typename I>

friend bool operator == (Vector<I> &a, Vector<I> &b);

template <typename I>

friend bool operator != (Vector<I> &a, Vector<I> &b);

};

template <class Q>

Vector <Q>::Vector(){

x=0;y=0;z=0;

}

template <class Q>

Vector <Q>::Vector(Q a, Q b, Q c){

x=a;y=b;z=c;

}

template <class Q>

void Vector <Q>::Dlina(){

double dlina = sqrt(x*x+y*y+z*z);

cout << "Dlina vectora: "<<dlina<< endl;

}

template <class Q>

void Vector<Q>::Vvod(){

cout << "Vvedite koordinati:\nx = ";

cin >> x;

cout << "y = ";

cin >> y;

cout << "z = ";

cin >> z;

}

template <class Q>

Vector <Q> operator +(Vector<Q> &a, Vector<Q> &c){

Vector<Q> b;

b.x=a.x+c.x;

b.y+=a.y+c.y;

b.z+=a.z+c.z;

return b;

}

template <class Q>

Vector<Q> operator +(Q num, Vector<Q>& a){

Vector<Q> b;

b.x = a.x +num;

b.y = a.y +num;

b.z = a.z +num;

return b;

}

template <class Q>

Vector<Q> operator -(Vector<Q> &a, Vector <Q>&c){

Vector<Q> b;

b.x=a.x-c.x;

b.y+=a.y-c.y;

b.z+=a.z-c.z;

return b;

}

template <class Q>

Vector<Q> operator -(Vector<Q>& a, Q num){

Vector<Q> b;

b.x = a.x -num;

b.y = a.y -num;

b.z = a.z -num;

return b;

}

template <class Q>

Vector<Q> operator *(Vector<Q> &a, Vector<Q> &c){

Vector<Q> b;

b.x=a.x*c.x;

b.y=a.y*c.y;

b.z=a.z*c.z;

return b;

}

template <class Q>

Vector<Q> operator *(Vector<Q>& a, Q num){

Vector<Q> b;

b.x = a.x *num;

b.y = a.y *num;

b.z = a.z *num;

return b;

}

template <class Q>

bool operator == (Vector<Q> &a, Vector <Q>&b){

bool zn;

if(a.x==b.x&&a.y==b.y&&a.z==b.z)

zn=true;

return zn;

}

template <class Q>

bool operator != (Vector<Q> &a, Vector <Q> &b){

bool zn;

if(a.x!=b.x||a.y!=b.y||a.z!=b.z)

zn=true;

return zn;

}

int main()

{

Vector<int> obj1, obj2(1,2,3), obj3;

obj1.Vvod();

obj3=obj1+obj2;

obj3.Show();

obj3=2+obj1;

obj3.Show();

obj3=obj2-obj1;

obj3.Show();

obj3=obj2-4;

obj3.Show();

obj3=obj1*obj1;

obj3.Show();

obj3=obj2*3;

obj3.Show();

if(obj1==obj2)

cout << "Vektora ravny\n";

else cout<<"Vektora ne ravny\n";

if(obj1!=obj2)

cout << "Vektora ne ravny\n";

else cout<<"Vektora ravny\n";

obj1.Dlina();

getch();

return 0;

}

7.4 Знімки з єкрану:

Рисунок 7.1- Робота програми

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

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