Программирование на C++

Шаблон функции 03

Техническое задание:

Шаблон функции и работа со строками

Код программы:

//-----------------------------------------------------------------------------------
#include <iostream>
using namespace std;
//-----------------------------------------------------------------------------------
	template < class T> // список формальных типов параметров функции (typename)
	T maximum ( T value1, T value2, T value3 ) // описание функции
	{
		T max = value1; 	// max присваиваем значение первой переменной
		if ( value2 > max )	// если значение второй переменной больше max
			max = value2; 	// max присваиваем значение второй переменной
		if ( value3 > max )	// если значение третьей переменной больше max
			max = value3; 	// max присваиваем значение третьей переменной
		return max;			// возврат максимального значения	
	}	
//-----------------------------------------------------------------------------------
int main(int argc, char *argv[]) // передача параметров через командную строку
{                                // например name bob
	// объявление необходимых переменных для проверки работы шаблона функции
	int int1 = 15, int2 = 42, int3 = 37;
	char char1 = 'a', char2 = 'b', char3 = 'c';
	float float1 = 41.1, float2 = 22.1, float3 = 31.1;
	double double1 = 57.1, double2 = 66.1, double3 = 72.1;
 
	// передача различных типов значений в шаблон функции
	cout << "int maximum() " << maximum( int1, int2, int3 ) << endl;
	cout << "char maximum() " << maximum( char1, char2, char3 ) << endl;
	cout << "float maximum() " << maximum( float1, float2, float3 ) << endl;
	cout << "double maximum() " << maximum( double1, double2, double3 ) << endl;
 
					/* работа со строками */	
	// считать количество букв с определенной позиции
	string st( "Student balbes esli ne est" );
	cout << st.substr( 8, 6 ) << endl;
 
	// перестановка строк местами
	string st1 = "one" ; // переменной st1 типа string присваиваем значение one
	string st2( 3, 'x' ); // переменной st2 типа string присваиваем три 'х'
	cout << "st1 - " << st1 << " st2 - " << st2 << endl;
	st1.swap( st2 ); // присваиваем переменной st1 значение переменной st2 
	cout << "st1 - " << st1 << " st2 - " << st2 << endl;	
 
	// присваивание значения переменной через . (точку)
	string st3, st4, st5; st3.assign(st2); cout << "st3 = " << st3 << endl;
 
	// присваиваем "r" определенной позиции значения переменной
	st1 [0] = st2 [2] ='r'; cout << "st1 = " << st1 << " st2 = " << st2 << endl;
 
	//функция at() контролирует проверку по диапазону, при выходе за исключение
	for (int i = 0; i < st.length(); i++) cout << st.at( i ); cout << endl;
 
	// перегруженный оператор +=
	st += " pirogki"; cout << st << endl;
 
	// сравнение строк
	if ( st1 == st2 ) cout << " str 1 == str 2\n"; else { 
		if ( st1 > st2 ) cout << "st1 > st2\n"; else cout << "st1 < st2\n";	}
 
	return 0;
}
//-----------------------------------------------------------------------------------
 

Результат выполнения программы:

int maximum() 42
char maximum() c
float maximum() 41.1
double maximum() 72.1
balbes
st1 - one st2 - xxx
st1 - xxx st2 - one
st3 = one
st1 = rxx st2 = onr
Student balbes esli ne est
Student balbes esli ne est pirogki
st1 > st2
 

Добавить комментарий