Шаблоны функций и классов
Понятия шаблонов функции и класса, правила описания на языке С++. Разработка и отлаживание в среде программирования программ, содержащих шаблоны функций и классов. Шаблон функции square, возвращающей квадрат переменной. Создание шаблона класса массива.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 25.05.2013 |
Размер файла | 162,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
ФИНАНСОВЫЙ УНИВЕРСИТ ПРИ ПРАВИТЕЛЬСТВЕ РФ
Кафедра прикладной информатики в экономике
ЛАБОРАТОРНАЯ РАБОТА
по дисциплине: "Информатика и программирование" на тему:
Шаблоны функций и классов
Студент Г.Р. Автанделян
Преподаватель Л.К. Кузнецов
МОСКВА
2013
Цель работы
Цель работы: изучить представление и правила работы с шаблонами в С++.
Ознакомиться:
Ш с понятием шаблона функции;
Ш с понятием шаблона класса;
Ш с правилами описания шаблонов на языке С++.
Изучить приемы создания и использования шаблонов классов.
Научиться разрабатывать и отлаживать в среде программирования программы, содержащие шаблоны функций и шаблоны классов.
Получить практические навыки создания шаблонов и использования их в программах С++.
Задание 1
1.1 Задание
Реализовать шаблон функции square, возвращающей квадрат переменной. Для проверки работоспособности шаблона функции написать тестирующую программу, в которой функция вызывается для данных целого, вещественного и длинного целого типа.
1.2 Листинг программы
#include <iostream>
using namespace std;
template <class T>
T square(T x)
{return x * x;}
int main()
{
int i1;
double d1;
long int l1;
cout<<"Введите целое число i1 ";
cin>>i1;
cout<<"Квадрат целого числа i1 = "<<square(i1) << endl;
cout<<"\Введите вещественное число d1 ";
cin>>d1;
cout<<"\Квадрат вещественного числа d1 = "<<square(d1)<< endl;
cout<<"Введите длинное целое число l1 ";
cin>>l1;
cout<<"\Квадрат длинного целого числа l1 = "<<square(l1)<< endl;
system ("pause");
return 0;
}
1.3 Тестирование программы
1.4 Шаблон функции для поиска минимального элемента массива
Листинг программы
#include <iostream.h>
#include <stdlib.h>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
template <class T>
T min(T *a, const int size)
{
T m = a[0];
for (int i = 1; i < size; ++i)
if (a[i] < m)
m = a[i];
return m;
}
int main()
{
srand(time(NULL)); //Инициализация датчика
int i,na,nb,mina,*a;
// na количество элементов в целочисленном массиве a
// nb количество элементов в вещественном массиве b
// mina минимальный элемент массива a
//*a указатель одномерного целочисленного массива a
float minb, *b;
//minb минимальный элемент массива b
//*b указатель одномерного вещественного массива b
// формирование исходных массивов
cout << "Введите количество элементов массива a: "; cin >> na;
a=new int[na];//динамическое выделение памяти для массива a
cout <<"Сформированные " <<na <<" элемента (ов) массива a: "<< endl;
for (i=0;i<na;i++)
{
//формирование СЧ в диапазоне от -100 до 100
a[i]=rand()%201-100; //формирование СЧ в диапазоне от -100 до 100
cout << a[i]<<" ";
}
cout << "\nВведите количество элементов массива b: "; cin >> nb;
b=new float[nb];//динамическое выделение памяти для массива b
cout <<"Сформированные " <<nb <<" элемента (ов) массива b: "<< endl;
for (i=0;i<nb;i++)
{
//формирование СЧ в диапазоне от -100.0 до 100.0
b[i]=201.0*rand()/RAND_MAX-100.0;
cout << b[i]<<" ";
}
mina= min(a,na);
cout <<"\nМинимальный элемент массива a: " <<mina << endl;
minb= min(b,nb);
cout <<"\Минимальный элемент массива b: " <<minb << endl;
system("pause");
delete []a; // освобождение динамической памяти
delete []b;// освобождение динамической памяти
return 0;
}
1.5 Тестирование программы
Задание 2
2.1 Задание
Создайте шаблон класса массива, в котором есть методы для вычисления суммы и среднего значения хранимых в массиве чисел.
Для проверки работоспособности шаблона класса напишите тестирующую программу, в которой шаблон класса используется для данных целого и вещественного массивов.
Данные для массивов сформировать с помощью датчика случайных чисел.
2.2 Листинг программы
шаблон функция класс
#include <iostream.h>
#include <stdlib.h>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
template<class T, class T1>
class array
{
public:
array(int size);
T1 sum(void);
T average_value(void);
void show_array(void);
int add_value(T);
private:
T *data;
int size;
int index;
};
template<class T, class T1>
array<T, T1>::array(int size)
{
data = new T[size];
if (data == NULL)
{
cerr << "Недостаточно памяти - программа завершается" << endl;
exit(1);
}
array::size = size;
array::index = 0;
}
template<class T, class T1>
T1 array<T, T1>::sum(void)
{
T1 sum = 0;
for (int i = 0; i < index; i++) sum += data[i];
return(sum);
}
template<class T, class T1>
T array<T, T1>::average_value(void)
{
T1 sum =0;
for (int i = 0; i < index; i++) sum += data[i];
return (sum /index);
}
template<class T, class T1>
void array<T, T1>::show_array(void)
{
for (int i = 0; i < index; i++)
cout << data[i] << " ";
cout << endl;
}
template<class T, class T1>
int array<T, T1>::add_value(T value)
{
if (index == size)
return(-1); // Массив полон
else
{
data[index] = value;
index++;
return(0); // Успешно
}
}
int main()
{
srand(time(NULL)); //Инициализация датчика
// Массив из 100 элементов
array<int, long> numbers(100);
// Массив из 200 элементов
array<float, float> values(200);
int i,m;
float a;
//Целочисленный массив
cout << "Целочисленный массив 50 элементов" << endl;
for (i = 0; i < 50; i++)
{m=rand()%201-100; //формирование СЧ в диапазоне от -100 до 100
numbers.add_value(m);
}
numbers.show_array();
cout << "Сумма чисел равна " << numbers.sum () << endl;
cout << "Среднее значение равно " << numbers.average_value() << endl;
//Вещественный массив
cout << "Вещественный массив 100 элементов" << endl;
for (i = 0; i < 100; i++)
{a=201.0*rand()/RAND_MAX-100.0; //формирование СЧ в диапазоне от -100.0 до 100.0
values.add_value(a);
}
values.show_array();
cout << "Сумма чисел равна " << values.sum() << endl;
cout << "Среднее значение равно " << values.average_value() << endl;
system("pause");
return 0;
}
2.3 Тестирование программы
Выводы
Выполнение этой лабораторной работы должно показать Вам средства языка C++, необходимые программисту для реализации программ использующих шаблоны функций и классов.
Во время выполнения этой и других работ Вы познакомитесь с другими возможностями языка С++ и выберете для себя некоторый стиль написания программ на языке С++.
Чем активнее Вы будете овладевать возможностями системы программирования на языке С++, тем более легким и эффективным будет для Вас выполнение всего лабораторного практикума.
Размещено на Allbest.ru
Подобные документы
Создание класса wind, характеризующего ветровой режим, и программы, демонстрирующей применение разработанного класса. Программный модуль на языке программирования C++ в среде программирования C++Builder6/0, демонстрирующая работу с классом wind.
курсовая работа [123,5 K], добавлен 24.06.2010Разработка шаблонной функции FindMax, выполняющей поиск максимального элемента в массиве. Разработка шаблонного класса CMyArray, представляющего собой массив элементов некоторого типа. Иерархия классов и интерфейсов. Индексированный доступ к элементам.
лабораторная работа [419,0 K], добавлен 03.11.2014Основные понятия препроцессорной обработки. Объектно-ориентированные средства С++. Объектные типы данных. Виртуальные функции. Шаблоны функций и классов. Классы для ввода-вывода потоков. Задачи по программированию на Си, по разработке систем объектов.
курс лекций [53,8 K], добавлен 03.10.2008Механизм классов в C++. Инициализация внутреннего объекта с помощью конструктора. Управление доступом к классу. Защищенные члены класса. Графические средства компилятора Borland C 3.1. Библиотека стандартных шаблонов. Реализация и использование класса.
курсовая работа [2,7 M], добавлен 16.05.2012Построение абстрактной модели. Структура базового класса System_Term: формальное описание класса, структура данных и функций, инструкция программиста и пользователя. Структура базовых классов mobile, Home, TV, Internet, их составные части и функционал.
курсовая работа [1,2 M], добавлен 20.06.2014Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.
лабораторная работа [137,9 K], добавлен 13.06.2014Оценка функциональных возможностей стандартных классов представления данных на примерах использования избранных методов ("detect: ifNone:" класса Set, "to:by:do:" класса Number и "copy: ReplaceFrom: to: with:" класса OrderedCollection), их тестирование.
лабораторная работа [1,1 M], добавлен 14.10.2012Основные приемы работы с классами и объектами. Перегрузка функций и операторов. Массивы объектов. Реализация одиночного наследования. Множественное наследование. Виртуальные функции. Шаблоны: понятие и функциональные особенности, свойства и применение.
методичка [1,1 M], добавлен 16.04.2012Виртуальные функции, статические и абстрактные классы, шаблоны: элементы и члены класса, их роль в объектно-ориентированном программировании; механизм осуществления виртуального вызова при выполнении программы; обработка исключительных ситуаций в C++.
реферат [27,2 K], добавлен 06.12.2010Класс как специальная структура для хранения разнотипной информации о физическом объекте. Порядок объявления класса, его специальные элементы-функции. Создание указателя на объект. Особенности конструкторов и деструкторов. Собственные операции класса.
курсовая работа [483,1 K], добавлен 07.04.2014