Лабораторная работа №10
Тема: обобщенное программирование, шаблоны
Задание 1
Разработайте шаблонную функцию FindMax, выполняющую поиск максимального элемента в массиве. В случае, если такой элемент присутствует, то значение максимального элемента должно быть занесено в аргумент maxValue, передаваемый по ссылке, а сама функция вернуть значение истина. В противном случае функция должна вернуть значение ложь.
Текст программы
Program
{bool method<T>(T[] t,ref T a)
{(t.Length == 0)
{false;
}
{= t.Max();true;
}
}
static void Main(string[] args)
{control = "";(control != "ex")
{.WriteLine("1 - Create String Array *");.WriteLine("2 - Create Char Array *");.WriteLine("3 - Create Int Array *");.WriteLine("4 - Create Double Array *");.WriteLine("5 - Create Byte Array *");.WriteLine("**************************");= Console.ReadLine();.Clear();(control)
{"1":s_max_string = "";.Write("Enter array lenght : ");len_s = int.Parse(Console.ReadLine());[] stroki = new string[len_s];(int i = 0; i < len_s; i++)
{[i] = Console.ReadLine();
}prov_s = method(stroki, ref s_max_string);.Clear();.Write("Max element : " + s_max_string);.ReadKey();.Clear();;"2":s_max_char = ' ';.Write("Enter array lenght : ");len_c = int.Parse(Console.ReadLine());[] chars = new char[len_c];(int i = 0; i < len_c; i++)
{[i] = char.Parse(Console.ReadLine());
}prov_c = method(chars, ref s_max_char);.Clear();.Write("Max element : " + s_max_char);.ReadKey();.Clear();;"3":s_max_int = 0;.Write("Enter array lenght : ");len_i = int.Parse(Console.ReadLine());[] ints = new int[len_i];(int i = 0; i < len_i; i++)
{[i] = int.Parse(Console.ReadLine());
}prov_i = method(ints, ref s_max_int);.Clear();.Write("Max element : " + s_max_int);.ReadKey();.Clear();;"4":s_max_double = 0.0;.Write("Enter array lenght : ");len_d = int.Parse(Console.ReadLine());[] dbs = new double[len_d];(int i = 0; i < len_d; i++)
{[i] = double.Parse(Console.ReadLine());
}prov_d = method(dbs, ref s_max_double);.Clear();.Write("Max element : " + s_max_double);.ReadKey();.Clear();;"5":s_max_byte = 0;.Write("Enter array lenght : ");len_b = int.Parse(Console.ReadLine());[] bytes = new byte[len_b];(int i = 0; i < len_b; i++)
{[i] = byte.Parse(Console.ReadLine());
}prov_b = method(bytes, ref s_max_byte);.Clear();.Write("Max element : " + s_max_byte);.ReadKey();.Clear();;
}
}
}
}
Результат выполнения программы
шаблонный функция класс интерфейс
Задание 2
Разработайте шаблонный класс CMyArray, представляющий собой массив элементов некоторого типа T.
Массив должен предоставлять следующие возможности:
·Возможность добавления элемента
·Возможность получения количества элементов
·Возможность индексированного доступа к элементам
·Возможность изменения длины массива
·Возможность опустошения массива
·Конструктор копирования
Текст программы
class MyGenericClass<T>
{[] aa;index = 0;MyGenericClass(int q)
{= new T[q];
}MyGenericClass(MyGenericClass<T> q)
{= q.aa;
}void ArrayAdd(T value)
{[index++] = value;
}int GetLength()
{aa.Length;
}void ArrayResize(int newSize)
{(newSize < aa.Length)
{.WriteLine("Error!!!");
}
{.Resize(ref aa, newSize);
}
}void ArrayClear()
{(int i = 0; i < aa.Length; i++)
{[i] = default(T);
}
}void Show()
{(T item in aa)
{.WriteLine(" " + item + " ");
}
}T GetElement(int qwe)
Предметы
Актуальные Практические задания по программному обеспечению, программированию