
- •Конструкторы и перегрузка операций
- •Введение
- •Лабораторная работа № 1. Конструкторы
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Int hours, minutes, seconds; // закрытые поля
- •Int getDigitByPosition(int pos); // возврат цифры числа по позиции
- •Int transferTo10(); // перевод в десятичную систему счисления
- •Void transferFrom10(int numb); // перевод из десятичной системы счисления
- •Int p_number_class::getDigitByPosition(int pos) {
- •Int p_number_class::transferTo10() {
- •Void p_number_class::transferFrom10(int numb) {
- •Int main(int argc, char* argv[])
- •Лабораторная работа № 2. Перегрузка операций
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Void print(const Week &d) // вывод на экран названий дней недели
- •Int denum; // поля - открыты
- •Void reduce(); // метод - открыт
- •Int getDigitByPosition(int pos); // возврат цифры числа по позиции
- •Int transferTo10(); // перевод в десятичную систему счисления
- •Void transferFrom10(int numb); // перевод из десятичной системы счисления
- •Int p_number_class::getDigitByPosition(int pos) {
- •Int p_number_class::transferTo10() {
- •Void p_number_class::transferFrom10(int numb) {
- •Int main(int argc, char* argv[])
- •Библиографический список
Int getDigitByPosition(int pos); // возврат цифры числа по позиции
char getCharByDigit(int digit); // перевод числа в символьное представление
Int transferTo10(); // перевод в десятичную систему счисления
Void transferFrom10(int numb); // перевод из десятичной системы счисления
public:
// конструктор без аргументов (по умолчанию)
P_number_class() : scale_of_notation(2) {
strncpy(number,"0\0",2);
}
// конструктор инициализации
P_number_class(char *n, int s) : scale_of_notation(s) {
int len = strlen(n);
strncpy(number,n,len);
number[len] = '\0';
}
// конструктор копирования
P_number_class(P_number_class &pn) : scale_of_notation(pn. getScaleOfNotation()) {
int len = strlen(pn.getNumber());
strncpy(number,pn.getNumber(),strlen(pn.getNumber()));
number[len] = '\0';
}
char* getNumber();
unsigned int getScaleOfNotation();
void read(); // метод ввода значений для полей
void display(); // метод вывода значений полей на экран
char* toString(); // метод преобразования в строку
void add(P_number_class &x); // метод сложения
void sub(P_number_class &x); // метод вычитания
void mul(P_number_class &x); // метод умножения
void div(P_number_class &x); // метод деления
bool equal(P_number_class &x); // метод проверки на равенство
bool greate(P_number_class &x); // метод проверки на то, что число больше
bool less(P_number_class &x); // метод проверки на то, что число меньше
};
char * P_number_class::getNumber()
{
return number;
}
unsigned int P_number_class::getScaleOfNotation()
{
return scale_of_notation;
}
void P_number_class::display() // метод вывода полей на экран
{ cout << "\n number: " << number << "\n scale_of_notation: " << scale_of_notation; }
void P_number_class::read() // метод ввода полей с клавиатуры
{ cout << "number: "; cin >> number;
cout << " scale_of_notation: "; cin >> scale_of_notation;
}
char* P_number_class::toString() // метод преобразования в строку
{
char string[25];
return strcat(strcat(number," в системе счисления "), itoa(scale_of_notation,string,10));
}
void P_number_class::add(P_number_class &x) // метод сложения
{
int num10 = transferTo10() + x.transferTo10();
transferFrom10(num10);
}
void P_number_class::sub(P_number_class &x) // метод вычитания
{
int num10 = transferTo10() - x.transferTo10();
transferFrom10(num10);
}
void P_number_class::mul(P_number_class &x) // метод умножения
{
int num10 = transferTo10() * x.transferTo10();
transferFrom10(num10);
}
void P_number_class::div(P_number_class &x) // метод деления
{
int num10 = transferTo10()/x.transferTo10();
transferFrom10(num10);
}
bool P_number_class::equal(P_number_class &x) // метод проверки на равенство
{
return (transferTo10() == x.transferTo10());
}
bool P_number_class::greate(P_number_class &x) // метод проверки на то, что число больше
{
return (transferTo10() > x.transferTo10());
}
bool P_number_class::less(P_number_class &x) // метод проверки на то, что число меньше
{
return (transferTo10() < x.transferTo10());
}
char P_number_class::getCharByDigit(int digit) {
switch(digit) {
case 0 : return '0';
case 1 : return '1';
case 2 : return '2';
case 3 : return '3';
case 4 : return '4';
case 5 : return '5';
case 6 : return '6';
case 7 : return '7';
case 8 : return '8';
case 9 : return '9';
case 10 : return 'A';
case 11 : return 'B';
case 12 : return 'C';
case 13 : return 'D';
case 14 : return 'E';
case 15 : return 'F';
default : return '\0';
}
}