Введение в объектно-ориентированное программирование
Заказать
"ПРОСТЕЙШИЕ ПРОГРАММЫ"
Цель работы
Целью данной лабораторной работы является реализация про-стейших программ, изучение работы с компилятором языка С/С++, изучение стандартного ввода/вывода и операций в языке С++.
Вариант Номер
задания Задание
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, обеспечить ему полную функциональность, необходимую для ком-плексных чисел, в качестве параметра шаблона - тип данных, используемых для хранения составляющих комплексного числа. Обеспечить операцию деления комплексных чисел.
Для удобства наших клиентов, проходящих обучение на ФДО ТУСУРа, была создана данная форма заказа, с помощью которой Вы можете БЕСПЛАТНО УЗНАТЬ СТОИМОСТЬ оказания помощи в выполнении работ по тем дисциплинам, которые Вам необходимы. Если Вы хотите заказать ОПТОМ выполнение одного и более семестров, то мы предложим Вам выполнение работ под ключ по самым выгодным ценам. Пожалуйста свяжитесь с нами по следующим контактам