Введение в объектно-ориентированное программирование

Введение в объектно-ориентированное программирование


Заказать
ЛАБОРАТОРНАЯ РАБОТА №1.
"ПРОСТЕЙШИЕ ПРОГРАММЫ"

Цель работы

Целью данной лабораторной работы является реализация про-стейших программ, изучение работы с компилятором языка С/С++, изучение стандартного ввода/вывода и операций в языке С++.


Вариант Номер
задания Задание
1 1.1 Найти минимальное число в массиве.
1.2 Произвести сложение двух массивов 5х3 по правилам сложения матриц.
1.3 Найти разницу в днях между двумя заданными датами.
2 2.1 Найти максимальное число в массиве.
2.2 Создать двумерный массив 5х3 элемента, найти в этом массиве сумму всех элементов.
2.3 Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали.
3 3.1 Найти сумму чисел в массиве.
3.2 Отсортировать массив по убыванию.
3.3 Произвести перемножение двух массивов 5х3 и 3х5 по правилам умножения матриц.
4 4.1 Найти произведение чисел в массиве.
4.2 Отсортировать массив по возрастанию.
4.3 Найти определитель матрицы 3х3 по определению определителя.
5 5.1 Распечатать массив в обратном порядке.
5.2 Заполнить массив числами Фибоначчи (от n=1 до n=20). Числа Фибоначчи: fn=fn-1+fn-2, f1=1, f2=1.
5.3 Произвести сложение двух одномерных массивов целых чисел, в каждом элементе которого записана одна десятичная цифра.
6 6.1 Заполнить массив значениями квадрата индекса.
6.2 Заполнить массив из 20 вещественных чисел значениями факториала: n!, где n - индекс массива, ! - операция факториал: n!=nЧ(n-1)!, 1!=1.
6.3 Произвести вычитание двух одномерных массивов целых чисел, в каждом элементе которого записана одна десятичная цифра.
7 7.1 Найти среднее арифметическое чисел массива.
7.2 Заполнить массив вещественных чисел случайными числами в диапазоне от 10 до 11. Произвести нормировку массива вещественных чисел: , где А - корень квадратный из суммы квадратов значений массива: .

7.3 Произвести операцию скалярного умножения двух векторов.
8 8.1 Домножить каждый элемент массива на заданное число.
8.2 Написать программу, которая определяет, является ли первый заданный вектор вещественных чисел обратной записью второго аналогичного вектора.
8.3 Вычислить векторное произведение двух векторов.
9 9.1 Добавить к каждому элементу массива заданное число.
9.2 По заданной квадратной матрице найти вектор, в котором записаны максимумы всех строк матрицы.
9.3 Найти вектор-сумму нескольких заданных векторов.
10 10.1 Вычесть из каждого элемента массива значение среднего арифметического.
10.2 По заданной квадратной матрице найти вектор, в котором записаны минимумы всех столбцов матрицы.
10.3 Назовем седловой точкой матрицы ячейку, которая является минимальной в своей строке и максимальной в столбце. Найти хотя бы одну седловую точку матрицы размером 10х10, если она есть.


ЛАБОРАТОРНАЯ РАБОТА №2. "РЕАЛИЗАЦИЯ ПРОСТЕЙШЕГО КЛАССА"

Цель работы

Целью данной лабораторной работы является реализация про-стейшего абстрактного класса на языке С++.

Вариант Задание
1 Разработать класс Vector - геометрический вектор произвольной размерности (размерность задается в конструкторе вектора). Реализовать метод доступа к элементам вектора. Реализовать операции сложения, вычитания и скалярного произведения векторов, а также нахождение модуля вектора.
2 Разработать класс Matrix - матрица. Размерность матрицы задавать в конструкторе. Реализовать метод доступа к элементам массива. Реализовать операции сложения, вычитания, умножения и транспонирования матрицы. Сделать метод определения симметричности матрицы (если матрица квадратная). Сделать метод формирования единичной матрицы (для квадратных матриц).
3 Разработать класс ArrayOfInt - массив целых чисел. Размерность массива задавать в конструкторе. Реализовать метод доступа к элементам массива. Реализовать метод Sum - вычисление суммы чисел в массиве. Метод сортировки массива по возрастанию и по убыванию, метод сравнения двух массивов (==, !=). Метод конкатенации (слияния) двух массивов.
4 Разработать класс FileStream, инкапсулирующий работу с файлами через стандартную библиотеку Си (fopen, fclose, fprintf, fscanf, fread, fwrite и т.д.). Реализовать методы открытия и закрытия файла (отдельный метод Open и метод Create и конструктор с именем открываемого файла, закрывать - в деструкторе и отдельным методом Close) Реализовать методы Write и Read для int, double и char*. Обеспечить два режима записи - двоичный и текстовый. В текстовом режиме все числа записываются в виде текста, например, целое число 3987 записывается как последовательность символов '3987 ' (преобразование можно сделать при помощи fprintf, например), а в двоичном в виде последовательности двух байт: 0x93, 0x0f (при помощи fwrite).
5 Разработать класс large - длинное целое. Для хранения одной десятичной цифры использовать одно число типа char. Количество десятичных цифр, которые должны размещаться в этом числе, передавать в конструкторе. Реализовать методы присваивания, сложения двух чисел, печати числа на экране.
Переписать программу вычисления числа Фибоначчи для типа large. Вычислить fn=100 (22 десятичных цифры). Замечание: если Вы в прошлый раз использовали рекурсивный алгоритм вычисления чисел Фибоначчи, то теперь Вам необходимо разработать нерекурсивный алгоритм, так как рекурсивное вычисление для n=100 займет слишком много времени (возможно, несколько миллионов лет).
6 Разработать класс String - строка символов. Реализовать операции присваивания, конкатенацию (слияние двух строк), сравнения строк (==, !=), метод вывода объекта на экран. Размер строки динамически увеличивается в процессе работы со строкой по мере необходимости.
7 Разработать класс Vector4 и Matrix4 - 4-компонентный вектор и матрица 4х4 соответственно. Реализовать операции сложения матриц, умножения матриц, сложения векторов, умножения матрицы на вектор и вектора на матрицу. Домножение матрицы и вектора на число, нормализация вектора (при данной нормализации все 4 составляющие вектора делятся на значение последней - четвертой составляющей). Отображение матрицы и вектора на экране.
8 Реализовать класс Date (дата) - инкапсулирует внутри данные для работы с датой. Реализовать методы ввода и вывода этой информации. Реализовать операцию вычисления разности между двумя датами (результат в днях).
9 Реализовать класс Time (время) - инкапсулирует внутри данные для хранения времени (часы, минуты, секунды). Реализовать методы ввода и вывода этой информации. Реализовать операцию вычисления разности между двумя точками времени (результат в секундах).
10 Разработать класс Complex - комплексные числа. Реализовать операции: сложения, умножения комплексных чисел, умножения реальных чисел на комплексные и наоборот, нахождения реальной и мнимой части числа, перевода в полярные координаты.


КОНТРОЛЬНАЯ РАБОТА №1

Цель работы
Целью данной контрольной работы является контроль знаний и умений, полученных в процессе изучения предыдущего материала.

Предварительные сведения
В предыдущих лабораторных работах внутри классов Вы исполь-зовали только встроенные в компилятор типы данных. Данная работа будет отличаться лишь тем, что, помимо стандартных типов данных, Вы будете использовать еще и созданные Вами в предыдущей лабо-раторной работе классы.


Вари-ант Задание
1 На основе класса Vector разработать класс Matrix (мат-рица, физически представляющая собой вектор, состоя-щий из заданного числа векторов). Реализовать метод сравнения двух матриц (==, !=).
2 Разработать класс ArrayOfMatrix - массив матриц. Раз-мерность массива и матриц, входящих в него, задавать в конструкторе. Реализовать метод доступа к элементам массива, метод сравнения двух массивов (==, !=). Реали-зовать операции конкатенации массивов.
3 Разработать класс SqArrayOfInt - двумерный массив целых чисел. Физически данный массив должен состоять из вектора массивов типа ArrayOfInt. Размерность мас-сива задавать в конструкторе. Реализовать метод досту-па к элементам массива. Реализовать метод Sum - вы-числение суммы чисел в массиве. Метод сортировки массива по возрастанию и по убыванию, метод сравне-ния двух массивов (==, !=). Метод конкатенации (слия-ния) двух массивов.
4 Разработать класс SortedFile - сортированный файл, в данном файле хранятся строчки одинаковой длины в порядке возрастания. Имя файла задается в конструкто-ре. Реализовать метод слияния двух файлов (результи-рующий файл должен остаться сортированным).
5 Разработать класс NaturalFraction (обыкновенная дробь) два числа типа large (числитель и знаменатель). Реализо-вать методы сложения, умножения и деления дробей. Метод вывода на экран.
6 Разработать класс Strings - массив строк символов. Реа-лизовать операции доступа к строкам (оператор "квад-ратная скобка"), присваивания, конкатенации (слияния двух массивов).
7 Разработать класс ArrayOfVector4 - массив 4-компонентных векторов. Размер массива не ограничен и изменяется динамически в зависимости от потребностей. Реализовать операции доступа к элементам массива, конкатенации, добавления к массиву элемента. Метод-итератор - в данный метод передается функция, которую необходимо выполнить для каждого элемента массива.
8 Реализовать класс Person (персона) - инкапсулирует персональные данные о человеке (фамилию, имя, отче-ство и дату рождения типа Date). Для этого класса реа-лизовать конструктор, позволяющий записать данные в объект и метод вывода персоны на экран. Реализовать класс Persons - массив персон. Реализовать операции доступа к элементам массива, конкатенации, добавления к массиву элемента. Метод, выдающий список лиц, до дня рождения которых осталось менее 5 дней (возможно придется модифицировать класс Date).
9 Реализовать класс Event (событие) инкапсулирует время прихода события (типа Time) и значение события (веще-ственное число). Реализовать класс Events - последова-тельность событий. Размер массива задается в конструк-торе и автоматически изменяется в случае необходимо-сти. Реализовать методы сортировки по времени и по значению события (два метода). Метод поиска среднего значения между двумя точками времени. Метод поиска среднего времени между двумя последовательными со-бытиями.
10 Разработать класс ComplexMatrix - матрица комплекс-ных чисел. Размер матрицы задается в конструкторе. Реализовать операции: сложения, умножения матриц, умножения матрицы на число (комплексное).

ЛАБОРАТОРНАЯ РАБОТА №3. "НАСЛЕДОВАНИЕ"

Цель работы
Целью данной лабораторной работы является изучение механиз-ма наследования.

Вариант Задание
1 Разработать класс NormVector - вектор единичной длины, наследованный от класса Vector.
Замечание: нормирование необходимо производить после любого изменения составляющих вектора. Соответственно необходимо перегрузить метод доступа к компонентам вектора.
2 Разработать класс NormMatrix (матрица с единичным определителем), наследованный от класса Matrix.
Замечание: для упрощения пусть матрица будет размерностью до 3х3. Нормирование матрицы необходимо производить после любого изменения составляющих. Соответственно необходимо перегрузить метод доступа к ее компонентам.
3 Разработать класс SortedArrayOfInt - упорядоченный массив целых чисел, наследованный от класса ArrayOfInt.
Замечание: сортировку массива необходимо производить после любого изменения его составляющих. Соответственно необходимо перегрузить метод доступа к его компонентам.
4 Разработать класс EncryptedFile - шифрованный файл, наследованный от файла FileStream. В конструктор данного класса передавать ключ - последовательность из нескольких символов, все операции чтения и записи производить через виртуальную процедуру шифрования. Об алгоритме шифрования читайте в комментариях. Все остальные методы сохраняются аналогично классу FileStream.
5 Разработать класс fixpoint (число с фиксированной точкой), наследованный от класса large. В конструктор класса передавать количество цифр до запятой и количество цифр после запятой - их сумма как раз и будет количеством цифр в числе large. Операция сложения остается неизменной. Изменятся вывод числа на экран.
6 Разработать класс LowString (строка из прописных символов), наследованный от класса String.
Замечание: замену больших букв на маленькие необходимо производить при любом изменении строки.
7 Разработать класс NormedVector4 - 4-компонентный нормализованный вектор. Нормализацию вектора необходимо производить при каждом изменении составляющих вектора. Обеспечить методы "поворот", "смещение", "масштабирование" (см. комментарии).
8 Реализовать класс ValidDate (корректная дата), наследованный от класса Date. При каждом изменении даты необходимо производить контроль корректности даты. Реализовать метод вывода печати в различных форматах.
9 Реализовать класс ValidTime - корректное время. При каждом изменении времени необходимо производить контроль корректности времени. Реализовать методы форматного вывода этой информации.
10 Разработать класс PolarComplex (комплексные числа, представленные в полярных координатах), наследованный от класса Complex. Ввод и вывод этих чисел осуществляется в полярных координатах, хранение и все остальные методы оставить родительские.


ЛАБОРАТОРНАЯ РАБОТА №4. "ШАБЛОНЫ"

Цель работы

Целью данной лабораторной работы является изучение шаблонов классов в языке С++.

Номер
варианта Задание
1 Разработать шаблон класса TVector - одномерный массив; в качестве параметра шаблона использовать тип данных, хранимых в массиве. Функциональность данного класса аналогична функциональности класса из 2-ой лабораторной работы. В качестве примера использования данного шаблона сделать его реализацию для типа NormVector.
2 Разработать шаблон класса TList - список (односвязный либо двусвязный); в качестве параметра шаблона использовать тип хранимых в списке данных. Обеспечить функциональность данного класса, аналогичную функциональности класса из 2-ой лабораторной работы. В качестве примера использования данного шаблона сделать его реализацию для типа Matrix.
3 Разработать шаблон класса TArray - массив (прямоугольный); в качестве параметра шаблона использовать тип хранимых в массиве данных. Обеспечить функциональность данного класса, аналогичную функциональности класса из 1-ой лабораторной работы. В качестве примера использования данного шаблона сделать его реализацию для типа SqArrayOfInt.
4 Разработать шаблон класса TFileOf - типизированный файл; в качестве параметра шаблона использовать тип данных, хранимых в файле (это могут быть строки фиксированной длины, целые числа, структуры и так далее). Имя открываемого файла и режим открытия (чтение/запись) передается в конструктор. Режим чтения и записи только двоичный. Реализовать методы Read и Write, в которые в качестве параметра передается объект (для Write) или ссылка на объект (для Read), который необходимо записать или прочитать.
5 Разработать шаблон класса TLarge - длинное число; в качестве параметра шаблона указать тип данных, используемых для хранения одной десятичной цифры. Обеспечить функциональность, аналогичную функциональности класса large. В качестве примера использования данного шаблона сделать его реализацию для типа char.
6 Разработать класс TString - строка символов; в качестве параметра шаблона указать тип данных, используемых для хранения одного символа. Обеспечить функциональность, аналогичную функциональности класса String. Размер строки динамически увеличивается в процессе работы со строкой по мере необходимости. В качестве примера использования данного шаблона сделать его реализацию для типа short.
7 Разработать шаблоны классов TVector4 и TMatrix4 - 4-компонентный вектор и матрица 4х4 соответственно; в качестве параметра шаблона использовать тип данных, используемых для хранения одной ячейки. Обеспечить функциональность, аналогичную функциональности классов Vector4 и Matrix4.
8 Разработать шаблон класса TVector - одномерный массив; в качестве параметра шаблона использовать тип данных, хранимых в массиве. Обеспечить метод доступа к элементам массива; дополнительно обеспечить функциональность, аналогичную классу Persons. В качестве примера использования данного шаблона сделать его реализацию для типа Person.
9 Разработать шаблон класса TVector - одномерный массив; в качестве параметра шаблона использовать тип данных хранимых в массиве. Обеспечить метод доступа к элементам массива; дополнительно обеспечить функциональность, аналогичную классу Events. В качестве примера использования данного шаблона сделать его реализацию для типа Person.
10 Разработать шаблон класса TArray - двумерный массив (матрица); в качестве параметра шаблона использовать тип данных, хранимых в матрице. Размерность матрицы задавать в конструкторе. Реализовать метод доступа к элементам массива. Реализовать операции сложения, вычитания, умножения и транспонирования матрицы. Сделать метод определения симметричности матрицы (если матрица квадратная). В качестве примера использования данного шаблона сделать его реализацию для типа Complex.


КОНТРОЛЬНАЯ РАБОТА №2

Цель работы
Целью данной контрольной работы является контроль знаний и умений, полученных в процессе изучения предыдущего материала.

Номер
варианта Задание
1 Доработать шаблон класса TVector. Будем считать новый шаблон полноценным геометрическим вектором; внести операции сложения, вычитания, умножения ска-лярного и геометрического (для 3-мерных), умножения на число, нормализацию вектора. В качестве парамет-ра шаблона - тип чисел хранимых в векторе (могут быть float, double, complex и так далее).
2 Разработать шаблон класса TMatrix, в качестве пара-метра шаблона - тип чисел хранимых в векторе (могут быть float, double, complex и так далее). В данном шаб-лоне должны быть реализованы методы: сложения, вычитания матрицы, умножения матриц, умножения матрицы на число, транспонирования, вычисления определителя (по определению), обращения матрицы. Создание единичной матрицы.
3 Разработать шаблон класса TVector - одномерный массив; в качестве параметра шаблона использовать тип хранимых в массиве данных. Обеспечить методы: добавление элемента в начало, в конец, в произвольное место массива. Аналогично удаление. Реализовать методы: среднее арифметическое, среднее геометриче-ское, максимум, минимум, сортировка по убыванию и по возрастанию. Дополнительно: написать функцию построения ряда Фибоначчи, в качестве контейнера для хранения ряда использовать реализацию шаблона TVector для вещественных чисел.
4 Добавить в шаблон класса TFileOf операцию сортиров-ки файла.
5 Добавить в шаблон класса large операции вычитания и умножения.
6 Добавить в шаблон класса TString методы: DelDupSpaces - удаление дублированных пробелов, Tab2Space - замена табуляции на пробелы, CountWord - подсчет количества слов, CountSimb - подсчет коли-чества символов.
7 Доработать шаблоны классов TVector4 и TMatrix4 для обеспечения полной функциональности (аналогично лабораторной работе №3).
8 Добавить к классу Date метод определения дня недели.
9 Доработать класс Time - написать метод перевода разницы секунд в часы, минуты и секунды.
10 Разработать шаблон класса TComplex, обеспечить ему полную функциональность, необходимую для ком-плексных чисел, в качестве параметра шаблона - тип данных, используемых для хранения составляющих комплексного числа. Обеспечить операцию деления комплексных чисел.



Форма заказа

Для удобства наших клиентов, проходящих обучение на ФДО ТУСУРа, была создана данная форма заказа, с помощью которой Вы можете БЕСПЛАТНО УЗНАТЬ СТОИМОСТЬ оказания помощи в выполнении работ по тем дисциплинам, которые Вам необходимы. Если Вы хотите заказать ОПТОМ выполнение одного и более семестров, то мы предложим Вам выполнение работ под ключ по самым выгодным ценам. Пожалуйста свяжитесь с нами по следующим контактам

Помощь студентам ФДО ТУСУР
Пожалуйста, заполните все необходимые поля формы:

Ваше имя*:
Ваш город*:
Ваша страна:
Ваш E-mail*:
Сотовый:
ICQ:
Ваша учебная специальность:

Список дисциплин и работ, которые необходимо выполнить*:
Работы необходимо выполнить до:


Введите код с картинки:
код

ВНИМАНИЕ ! На работу предоставляется гарантия - т.е. мы БЕСПЛАТНО внесем в её текст все необходимые дополнения/изменения если это потребуется в будущем (в течение 6-и месяцев). Другими словами - в течение полугода Вы можете обращаться с доработками данного заказа по рецензиям преподавателя (включая просто дополнительные вопросы преподавателя) - мы всё сделаем БЕСПЛАТНО и в кратчайшие сроки (стандартное время доработки: 2-3 дня, если нужно экстренно - то 24 часа). Заказ будет дорабатываться неограниченное количество раз в рамках 6-и месяцев с момента первичного выполнения заказа, если доработки понадобятся по истечении данного срока, то они также возможны, но за дополнительную плату. Критерием защиты работы является оценка 4(хорошо), либо получение зачёта. Если Вы получите зачёт с оценкой 3(удовлетворительно) это будет считаться достижением цели. Вы не вправе требовать от нас частичный возврат средств если Вам поставят тройку, т.к. мы готовы дорабатывать заказ до четверки, если есть техническая возможность такой пересдачи.

 Я принимаю Пользовательское соглашение