Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2463.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
387 Кб
Скачать
☆

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();

// вывод значений полей на экран

friend ostream& operator<<(ostream& t, const P_number_class &r);

// ввод значений для полей

friend istream& operator>>(istream& t, P_number_class &r);

char* toString(); // метод преобразования в строку

friend P_number_class operator+(P_number_class &x, P_number_class &y); // сложение

friend P_number_class operator-(P_number_class &x, P_number_class &y); // вычитание

friend P_number_class operator*(P_number_class &x, P_number_class &y); // умножение

friend P_number_class operator/(P_number_class &x, P_number_class &y); // деление

friend bool operator==(P_number_class &x, P_number_class &y); // проверка на равенство

friend bool operator>(P_number_class &x, P_number_class &y); // проверка на то, что число больше

friend bool operator<(P_number_class &x, P_number_class &y); // проверка на то, что число меньше

};

char * P_number_class::getNumber()

{

return number;

}

unsigned int P_number_class::getScaleOfNotation()

{

return scale_of_notation;

}

ostream& operator<<(ostream& t, const P_number_class &r) // вывод полей на экран

{ return (t << "\n number: " << r.number << "\n scale_of_notation: " << r.scale_of_notation); }

istream& operator>>(istream& t, P_number_class &r) // ввод полей с клавиатуры

{ t >> r.number;

t >> r.scale_of_notation;

return t;

}

char* P_number_class::toString() // метод преобразования в строку

{

char string[25];

return strcat(strcat(number," в системе счисления "), itoa(scale_of_notation,string,10));

}

P_number_class operator+(P_number_class &x,P_number_class &y) // сложение

{

int num10 = x.transferTo10() + y.transferTo10();

P_number_class z(x);

z.transferFrom10(num10);

return z;

}

P_number_class operator-(P_number_class &x,P_number_class &y) // вычитание

{

int num10 = x.transferTo10() - y.transferTo10();

P_number_class z(x);

z.transferFrom10(num10);

return z;

}

P_number_class operator*(P_number_class &x,P_number_class &y) // вычитание

{

int num10 = x.transferTo10() * y.transferTo10();

P_number_class z(x);

z.transferFrom10(num10);

return z;

}

P_number_class operator/(P_number_class &x,P_number_class &y) // вычитание

{

int num10 = x.transferTo10() / y.transferTo10();

P_number_class z(x);

z.transferFrom10(num10);

return z;

}

bool operator==(P_number_class &x, P_number_class &y) // проверка на равенство

{

return (x.transferTo10() == y.transferTo10());

}

bool operator>(P_number_class &x, P_number_class &y) // проверка на то, что число больше

{

return (x.transferTo10() > y.transferTo10());

}

bool operator<(P_number_class &x, P_number_class &y) // проверка на то, что число меньше

{

return (x.transferTo10() < y.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';

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]