Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 4 семестр.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
110.73 Кб
Скачать

Примеры выполнения перегрузки функции и использования шаблона функции

Перегрузка функции swap

#include "stdafx.h"

using namespace std;

void swap(int &x, int &y);

void swap(float&x, float &y);

void swap(double &x, double &y);

main()

{

int x=2,y=3;

swap(x,y);

float a=5.0,b=7.0;

swap(a,b);

double c=9.1,d=8.2;

swap(c,d);

cout << c <<' '<< d;

cin.get();

}

void swap(int &x, int &y)

{

int w=x;

x=y;

y=w;

}

void swap(float&x, float &y)

{

float w=x;

x=y;

y=w;

}

void swap(double &x, double &y)

{

double w=x;

x=y;

y=w;

}

Функция шаблон

#include "stdafx.h"

#include "iostream.h"

template<class T>

void swap(T &x,T &y);

int main()

{

int x=2,y=3;

swap(x,y);

float a=5.0,b=7.0;

swap(a,b);

double c=9.1,d=8.2;

swap(c,d);

cout << c <<' '<< d;

cin.get();

cout<<a<<' '<<b;

return 0;

}

template<class T>

void swap(T &x,T &y)

{T z=x;

x=y;

y=z;

}

Перегрузка бинарной операции(внешняя функция)== для структур данных.

#include "stdafx.h"

using namespace std;

struct data{int x;int y;};

int operator == (data z1,data z2);

main()

{ data l={1,2};

data m={1,2};

if (m==l)

cout<<"yes";

else

cout<<"no";

cin.get();

}

int operator ==(data z1,data z2)

{ if (z1.x==z2.x && z1.y==z2.y)

return 1;

return 0;

}

Рекурсивная функция

#include "stdafx.h"

#include "iostream.h"

// Задача1.дана последовательность целых чисел, заканчивающаяся нулем

// вывести сначала положительные, а затем отрицательные значения

void rec11();

//Задача2. Вычислить xn

такое определение алгоритма говорит об его рекурсивной природе

int rec2(int x, int n);

int main()

{

rec11();

cout<<rec2(2,3);

int x=3, n=-3;

if (n<0)

cout<<(1.0/rec2(x,-n));

return 0;

}

void rec11()

{int n;

cin>>n;

if (n==0)

return;

else

if(n>0)

{

cout<<n;

rec11();

}

else

{rec11();

cout<<n;

}

}

int rec2(int x, int n)

{

if (n==0)

{

if (x==0)

return -1;

else

return 1;

}

else

// step recursii rec2(x,n)=x*rec2(x,n-1)

return x*rec2(x,n-1);

}

Лабораторная работа №9

Тема: Создание класса. Перегрузка операций.

Задание.

  1. Разработайте АТД согласно варианту задания.

  2. Реализуйте АТД варианта, используя пользовательский тип – класс, в отдельном модуле.

Включите в класс методы:

  • конструктор по умолчанию;

  • конструктор с параметрами;

  • копирующий конструктор и деструктор, если используется динамическая память для представления данных.

Перегрузите операции:

  • операцию >> для вывода экземпляров класса в поток ostream.

  • Выполните перегрузку дополнительных операций, указанных в задании варианта.