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



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

 

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

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

 

 

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

 

Звіт

з лабораторної роботи №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- Робота програми

 

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 7; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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