
- •Лабораторная работа 7
- •Лабораторная работа 8
- •Примеры выполнения перегрузки функции и использования шаблона функции
- •Лабораторная работа №9
- •Лабораторная работа №10(дерево)
- •Лабораторная работа 11
- •Ввод – вывод потоковый
- •Закрытие файла
- •Методы для управления ошибками потоков
- •Форматирование данных
- •Пример.Операции с текстовым файлом.
- •Пример. Операции с двоичным файлом
- •Лабораторная работа 12
- •Лабораторная работа 13
- •Лабораторная работа 14
Примеры выполнения перегрузки функции и использования шаблона функции
Перегрузка функции 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
Тема: Создание класса. Перегрузка операций.
Задание.
Разработайте АТД согласно варианту задания.
Реализуйте АТД варианта, используя пользовательский тип – класс, в отдельном модуле.
Включите в класс методы:
конструктор по умолчанию;
конструктор с параметрами;
копирующий конструктор и деструктор, если используется динамическая память для представления данных.
Перегрузите операции:
операцию >> для вывода экземпляров класса в поток ostream.
Выполните перегрузку дополнительных операций, указанных в задании варианта.