Лабораторная работа 3 Классы, содержащие массивы встроенных типов данных - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Лабораторная работа №7 двухмерные массивы (матрицы) 1 62.14kb.
Система генерации общих типов данных в фундаментальных 1 98.28kb.
Основные типы данных в Mathcad 1 86.96kb.
Лабораторная работа №1 2 Метод рассечения-разнесения данных 2 Задание... 4 474.03kb.
Лабораторная работа №1 Реляционная модель данных 1 205.33kb.
Лабораторная работа №1 «Важнейшие классы неорганических соединений» 1 64.27kb.
Лабораторная работа №2 Важнейшие классы неорганических соединений. 1 104.81kb.
Одномерные массивы в Паскале 1 196.17kb.
Практикум на языке программирования Лисп (4-й курс, осень 2012 г. 1 25.58kb.
Vi международный форум «Комплексное обеспечение лабораторий» 15 17... 1 83.99kb.
Лабораторная работа по теме: «Комбинированный тип данных. Записи. 1 33.73kb.
Программа дисциплины «Адаптационный курс математики» 1 162.94kb.
Направления изучения представлений о справедливости 1 202.17kb.

Лабораторная работа 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].





Политик: игрок, который пытается играть только своими картами. Владислав Гжещик
ещё >>