Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 9
з дисципліни: Програмування ч. 2 (ООП)
на тему: “Шаблони”
Тема роботи: Шаблони
Мета роботи: познайомитися з шаблонами.
Завдання: В масиві обчислити: — різниця елементів масиву, що розташовані між першим від'ємним та другим додатним елементами.
Текст програми:
//-------------------------------main.c--------------------------------------
#include "Array.h"
#include <stdio.h>
#include <time.h>
#define N 10
void main ()
{
srand( time(NULL) );
//Масив елементів int, double, char
Array<int, N> iarr(20);
Array<double, N> darr(50);
Array<char, N> carr(255);
//Вивід масивів і об числення функції
cout << "int :" << iarr << "sum=" << iarr.Sum() << endl;
cout << "double:" << darr << "sum=" << darr.Sum() << endl;
cout << "char :" << carr << "sum=" << carr.Sum() << endl;
getchar();
}
//-------------------------------Array.h-------------------------------------
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
template<class T,int size> class Array
{
protected:
//Масив
T arr[size];
public:
//Вивід елементів
friend ostream& operator<< (ostream& output, Array<T,size>& arr);
//Сума елементів
T Sum();
//Конструктор
Array(int num=0);
//Деструктор
~Array() {};
};
//Конструктор
template<class T, int size> Array<T,size>::Array(int num)
{
int i;
if (num)
for (i=0; i<size; i++) {
arr[i] = (T) ( ( rand() % (num*1000) ) /1000.0 );
if (rand()%2==0) arr[i] = -arr[i];
}
else memset (arr, 0, size*sizeof(T));
}
//Вивід елементів
template <class T,int size> ostream& operator<< (ostream& output, Array<T,size>& arr)
{
int i;
for (i=0; i<size; i++)
{
output << arr.arr[i] << " ";
}
output << endl;
return output;
}
//Сума елементів
template <class T, int size> T Array<T,size>::Sum()
{
int i;
T sum=0;
bool flg1=0,flg2=0;
for (i=0; i<size; i++)
{
if (arr[i]<0)
flg1=1;
if (flg1 && !flg2)
{
sum=-arr[i];
if (arr[i]>0)
flg2=1;
}
}
return sum;
}
Результати роботи програми:
Висновок: На цій лабораторній роботі я ознайомився з шаблонами. Створив шаблон масив і функції для роботи з ним.