Вариант 5. Арифметика повышенной точности

Сложность

17 баллов

Описание

Спроектировать и реализовать класс BigInt, позволяющий хранить целые числа в диапазоне [-1040..+1040], и производить набор основных операций с ними.

В классе должны быть определены различные конструкторы (по умолчанию, по строке (char *), по целому числу встроенного типа (например, long), конструктор копирования).

Должны быть перегружены следующие операторы: +, ++ (префиксный и постфиксный), -- (префиксный и постфиксный), -, *, +=, -=, *=, ==, !=, <, >, <=, >=, << (вывод в поток типа ostream).

[Замечание]Замечание

Деления в списке операторов, подлежащих реализации, нет!

Защита

Для защиты лабораторной работы необходимо представить:

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

Пример

Разработанный класс BigInt должен допускать такое использование:

/*...*/

int main() {
	BigInt a;
	BigInt b("-1206");   
	BigInt c(1207);       

	a = c;
	if (a != c) cout << "Something wrong\n"; else cout << "As expected\n";

	if (b < c) cout << "As expected\n"; else cout << "Something wrong\n";
	
	cout << b++ << endl
	     << c-1 << endl
	     << (b+=7) << endl;

	return 0;
}
Сайт управляется системой uCoz