страница 1 |
|||||||||||||||||||||||||||||||||||||||||||
Похожие работы
|
Лабораторная работа 3 Классы, содержащие массивы встроенных типов данных - страница №1/1
![]() Лабораторная работа 3Классы, содержащие массивы встроенных типов данных Цель работыИзучение особенностей определения класса, содержащего указатели на встроенные типы данных. Определение конструкторов, деструктора, операций присваивания и индексирования. Общее заданиеВыберите для выполнения лабораторной работы свой вариант. Для выбранного варианта определите класс, включив в него:
Перегрузите операции присвоения и индексации. В разрабатываемом классе перегрузите потоковые операции для объектов класса. Для выполнения задания предложенного варианта перегрузите необходимые математические операции. При разработке класса вашего варианта учтите индивидуальные уточнения для функций – членов класса. Разработайте для объектов вашего класса предложенные в каждом варианте пользовательские функции. Создать пользовательскую функцию, организующую в режиме меню демонстрацию правильности работы всех функций вашего класса и функции, организующей вычисление выражений по приведенному в вашем варианте заданию.
Индивидуальные задания.I. Класс "Множество из элементов типа целые положительные числа" (Intset) состоит из следующих данных: - указатель на тип unsigned int или int; - мощность множества (максимальное количество элементов в множестве); - количество элементов в данном множестве. Множество - совокупность однотипных 3неповторяющихся 0 элементов, для которого определены следующие операции: - пересечение двух множеств состоит из элементов, входящих как в одно, так и другое множество (обозначается *); - объединение двух множеств состоит из элементов, входящих или в одно или в другое множество или в оба вместе(обозначается +); - разность множеств A и B состоит из элементов A, не принадлежащих B (обозначается -); - множество A содержится в множестве B (обозначается <), если каждый элемент A содержится в B; - множества A и B эквивалентны, если A- множество называется пустым (обозначается 0), если оно не содержит ни одного элемента. Мощность множества одинакова для всех объектов Intset, и поэтому должна иметь описатель static. Дополнительно к общему заданию определить для класса Intset: - конструктор по умолчанию, определяющий пустое множество; - функцию member с параметром положительное целое число, возвращающее "истинно", если множество содержит элемент с соответствующим значением, и "ложно" в противном случае; - функцию insert c параметром положительное целое число, осуществляющую добавление элемента в множество в том случае, если оно еще не содержит такого элемента. Определить операции, необходимые для следующих вычислений. 1. A * B + C; 2. (A-B)*C; 3. A+B-C; 4. C = (A == B) ? A : 0 5. C = (A < B) ? A : B 6. C=(A+B>=C) ? C: A-B; 7. C+(A-X)*X II. Класс "Строка" (String) состоит из следующих данных: - указатель на тип char; - количество символов в строке. Примечание. Массив символов _ не должен . содержать символа окончания строки. Перегрузить для класса String операцию + для сцепления двух строк. Перегрузить для класс String функцию из библиотеки string по индивидуальному заданию. Разработать функции по нижеследующему индивидуальному заданию и функцию main для проверки правильности работы класса. 8. strncat; Функция substr выделяет подстpоку в данной стpоке. Паpаметpы: * стpока; * номеp символа, с котоpого начинается выделение подстpоки; * длина выделяемой подстpоки. Возвpащаемое значение - подстpока. Если номеp символа выходит за гpаницы номеpов символов в стpоке, то возвpащается вся стpока, если длина выделяемой подстpоки больше оставшейся части стpоки возвpащается вся оставшаяся часть стpоки. 9. strcmp; Функция rat с параметрами строка, символ возвpащает номеp последнего вхождения заданного символа в заданную стpоку. Если символ не обнаpужен, она возвpащает 0. 10. strset Функция stuff с параметрами строка1, строка2, n возвращает строку1, в которой все символы, начиная с номера n, заменены на строку2. Если количество символов в строке1, начиная с n-ого, меньше длины строки2, то строка1 увеличивается до требуемой длины. Если n больше длины строки1, строка2 добавляется к концу строки1. 11. strnset Функция left с параметрами строка, n выделяет n первых символов из строки. Если длина строки меньше n, выделяется вся строка. Функция right с параметрами строка, n выделяет n последних символов из строки. Если длина строки меньше n, выделяется вся строка. 12. strncpy Функция instr с параметрами строка1, строка2, n осуществляет поиск строки2 в строке1, начиная с позиции n строки1. Если поиск окончился успешно, она возвращает позицию символа в строке1, начиная с которой обнаружено вхождение, в противном случае - 0. 13. strndel Функция strndel с параметрами строка1, строка2, n удаляет строку2 в строке1, после позиции n строки1. Если строка2 находится в строке1 после позиции n, то возвращается новая строка, иначе – 0,. III. Класс "Матрица из элементов типа double" (DMatrix) состоит из следующих данных: - указатель на тип double; - количество строк; - количество столбцов. Определить операции и функции, необходимые для следующих вычислений. Прописные буквы в формулах означают матрицы, строчные - простые переменные, а строчные с нижними индексами – элементы матрицы. 14. Y = x*V + 2*U; Z = v[1,2] *U + u[2,1] *V. 15. Y = x*V - U/2; Z = v[2,1] *U - 2*V. 16. Y = U*V; Z = U-V. 17. Определить матрицу X по следующим выражениям: x[1,1] = min(V); x[1,2] = max(V); x[2,1] = min(V) + max(U); x[2,2] = max(V) - min(U). 18. Y = 2*U+3*V; Z = 2*U-3*V. 19. Y = U+ V/min(U); Z = -u[0,1]*V. 20. X=c+Z[0]*Y- Z/b IV. Класс "Вектор из элементов типа double" (DVector) состоит из следующих данных: - указатель на тип double; - размерность вектора. Определить операции и функции, необходимые для следующих вычислений. Прописные буквы в формулах означают векторы, строчные простые переменные, а строчные с нижним индексом - элементы вектора. 21. Y = x*V + 2*U; Z = V[1] *U + u[1] *V. 22. Y = x*V - U/2; Z = V[2] *U - 2*V. 23. y[1] = cos(U,V); y[2] = U*V. 24. x[1] = min(V); x[2] = max(V). 25. z[1] = (X1 == X2 ? X1 : X1 - X2) z[2] = a[1] *mod(A). 26. Y = u[3]*V +U/v[0]; z = min(U )* u[1]. 27. Y = V/3 -v[0]*U; z = max(V )+ v[2]. |
ещё >> |