Читайте также:
|
|
1. Создайте класс с именем Complex для выполнения ариф-
метических действий с комплексными числами. Напишите программу
драйвера для проверки вашего класса. Комплексные числа имеют форму realPart + imaginaryPart * j, где j – квадратный корень из (-1).
Используйте переменные с плавающей запятой для представления закрытых данных этого класса. Создайте функцию конструктор, которая позволяет объекту этого класса принимать начальные значения при его объявлении. Создайте открытые функции-элементы для каждого из следующих пунктов:
a) сложения двух комплексных чисел: отдельно складываются действительные и мнимые части;
б) вычитания двух комплексных чисел: действительная часть правого операнда вычитается из действительной части левого операнда, а мнимая часть правого операнда вычитается из мнимой части левого операнда;
в) печати комплексных чисел в форме (a, b), где a – действительная часть,
b –мнимая часть.
2. Создайте класс по имени Rational для выполнения арифметических действий с дробями. Напишите программу драйвера для вашего класса.
Используйте целые переменные для представления закрытых данных класса – числителя и знаменателя. Создайте функцию-конструктор, которая позволяет объекту этого класса принимать начальные значения при его объявлении. Конструктор должен содержать значения по умолчанию на случай отсутствия заданных начальных значений и должен хранить дроби в сокращенном виде (т.е. дробь 2/4 должна храниться в объекте как 1 в числителе и 2 в знаменателе). Создайте открытые функции-элементы для каждого из следующих случаев:
a) сложения двух чисел Rational (результат должен храниться в сокращенной форме);
б) вычитания двух чисел Rational;
в) перемножения двух чисел Rational;
г) деления двух чисел Rational;
д) печати чисел Rational в форме a / b, где а – числитель, b – знаменатель;
е) печати чисел Rational в форме с плавающей точкой.
3. Создайте класс Rectangle (прямоугольник). Класс имеет атрибуты length (длина) и width (ширина), каждый из которых по умолчанию равен единице. Он имеет функции-элементы, которые вычисляют периметр (perimeter) и площадь (area) прямоугольника, а также функции записи и чтения как для length, так и для width. Функции записи должны проверять, что length и width – числа с плавающей запятой, находящиеся в пределах от 0.0 до 20.0.
4. Создайте более совершенный (по отношению к предшествующему заданию) класс Rectangle. Он должен хранить только декартовы координаты четырех углов прямоугольника. Конструктор вызывает набор функций, которые принимают четыре группы координат и проверяют, чтобы каждая из координат x и y находилась в первом квадранте, в диапазоне от 0.0 до 20.0. Также должна выполняться проверка: действительно ли переданные координаты определяют прямоугольник. Должны быть предусмотрены функции-элементы, вычисляющие length, width, perimeter и area. Длиной считается большее из двух измерений. Включите предикатную функцию square, которая определяла бы, не является ли прямоугольник квадратом.
5. Модифицируйте класс Rectangle в предыдущем задании так, чтобы добавить в него функцию draw, которая изображает прямоугольник внутри окна 25 на 25, перекрывающего часть первого квадранта, в котором находится прямоугольник. Включите функцию setFillCharacter, чтобы задавать символ, которым будет заполняться прямоугольник внутри. Добавьте функцию setPerimeterCharacte r, чтобы задавать символ, которым будут печататься границы прямоугольника. Можете включить функции масштабирования размера прямоугольника, его вращения и перемещения в пределах первого квадранта.
6. Создайте класс HugeInteger, который использует массив из 40 элементов для хранения целых чисел, содержащих до 40 цифр. Создайте функции элементы inputHugeInteger, outputHugeInteger, addHugeIntegers и substractHugeIntegers для ввода, вывода, сложения и вычитания этих больших целых. Для сравнения объектов HugeInteger создайте функции isEqualTo (равно), isNotEqualTo (неравно), isGreaterThan (больше), isLessThan ( меньше ), isGreaterThanOrEqualTo (больше или равно), isLessThanOrEqualTo (меньше или равно) – каждая из них является предикатной функцией, которая просто возвращает единицу (истина), если соответствующее соотношение между двумя большими целыми выполняется. Создайте предикатную функцию isZero (нуль). Можно подготовить также функции-элементы multiplayHugeIntegers (умножение), divideHugeIntegers (деление) и modulusHugeIntegers (нахождение абсолютной величины).
7. Создайте класс Date со следующими возможностями:
a) с выводом дат в форматах: DD YYYY; MM/DD/YY; Июнь 14, 2007;
b) с использованием перегруженных конструкторов для создания объектов Date с начальными значениями дат в форматах пункта а);
c) с конструктором Date, который читает системную дату, используя стандартные библиотечные функции заголовочного файла time.h, и передает ее элементам Date.
Напишите демонстрационную программу.
8. Создайте класс SavingsAccount (хранение вкладов) со статическим элементом данных annualInterestRate (процентная ставка) для хранения информации о каждом вкладчике. Каждый элемент этого класса содержит закрытый элемент данных savingsBalance, указывающий сумму, которую вкладчик имеет на депозите. Напишите функцию-элемент calculateMonthlyInterest (расчет ежемесячного дохода), которая ежемесячно вычисляет доход путем деления на 12 произведения balance и annualInterestRate; этот доход $ + 7 % должен прибавляться к savingsBalance. Напишите статическую функцию-элемент modifyInterestRate (изменение процентной ставки), которая задает annualnterestRate новое значение. Напишите программу-драйвер для проверки класса SavingsAccount saver1 и saver2, с балансами $2000.00 и $3000.00 соответственно. Установите annualInterstRate равным 3 %, затем вычислите месячный доход по вкладу и напечатайте новые балансы для каждого из вкладчиков. Затем установите annualInterestRate равным 4 % и повторите операции.
9. Создайте класс IntegerSet (множество целых). Каждый объект класса может вмещать целые в диапазоне от 0 до 100. Множество представляется массивом из нулей и единиц. Элемент массива a[i] равен единице, если целое i находится во множестве. Элемент массива a[j] равен нулю, если целого j нет во множестве. Конструктор по умолчанию инициализирует множество как пустое, т.е. множество, содержащее только нули. Напишите функции-элементы для типичных операций над множествами: функцию-элемент unionOfIntegerSet, которая создает третье множество, являющееся теоретико-множественным объединением двух существующих. (Элемент массива третьего множества устанавливается равным единице, если соответствующий элемент равен единице хотя бы в одном или обоих существующих множествах, и элемент массива третьего множества устанавливается равным нулю, если этот элемент равен нулю в обоих существующих множествах). Функция-элемент intersectionOfIntegerSets создает третье множество, являющееся теоретико-множественным пересечением двух существующих наборов (т.е. элемент массива третьего множества устанавливается равным нулю, если этот элемент равен нулю в одном или обоих существующих множествах, и элемент массива третьего множества устанавливается равным единице, если этот элемент единичный в обоих существующих).
10. Создайте класс SalesPerson, отслеживающий суммы продаж служащего за определенный срок работы. Полями класса должны быть имя продавца PersonName и динамический массив или самоссылочная конструкция для хранения сумм вырученных от продаж средств за каждый месяц MonthlySales. С помощью конструктора всем данным должны присваиваться нулевые начальные значения. Класс должен содержать функции-члены по анализу объемов продаж. Функция-член TotalSales возвращает сумму продаж за весь период работы. MonthSales возвращает сумму, вырученную за один определенный месяц. PeriodSales возвращает сумму продаж за указанный промежуток времени. Все функции-члены класса должны выводить информацию на экран в удобном и понятном для пользователя виде.
11. Создайте три способа работы с данными логического типа boolean:
а) традиционный с использованием препроцессора
#define TRUE 1
#define FALSE 0
#define Boolean int
б) в ANSI C и С++ c использованием перечислимых типов
enum Boolean {false, true};
в) в С++ как класс
Дата добавления: 2015-07-25; просмотров: 118 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Омск 2007 | | | Class Boolean |