Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
12.02.2016
Размер:
26.84 Кб
Скачать

10.Створити клас – ціле число. У закритій частині визначити поля – система числення і рядок символів, що відповідає числу. Визначити конструктор, деструктор, функції зміни значень полів і отримання їхніх значень, функції переведення числа у десяткову систему, переведення введеного десяткового числа у задану систему числення.

#include<iostream>//підключаємбібліотеку

/////////////////////////////////

usingnamespacestd;//підключаємпростірімен

/////////////////////////////////

#define MAX 10//максимальна довжина числа

/////////////////////////////////

classcile

{//закритачастина

private:

int s;//система числення

char c[MAX];//число

public://відкрита частина

cile();//кноструктор без параметрів

cile(int, char[]);//конструктор з параметрами

~cile();//деструктор

intgetS();//берем систему числення

char* getC();//берем речення

voidsetS();//зміна поля системичислення

voidsetC();//зміна поля числа

voiddesyatkova();//перевід числа в десяткове

voidsustema();//перевід з десяткового в сисетмучислення

};

/////////////////////////////////

cile::cile()

{

s = 0;//онулюєм

c[0] = '1';//робим число 1

c[1] = '\0';

}

/////////////////////////////////

cile::cile(int s, char c[MAX])

{

//переприсвоюємзначення параметрам

this->s = s;

//копіюєм рядок

strcpy(this->c, c);

}

/////////////////////////////////

cile::~cile()

{

//пустийбо не виділялидинамічноїпамя'ті

}

/////////////////////////////////

intcile::getS()

{

//вертаєм систему числення

return s;

}

/////////////////////////////////

char* cile::getC()

{

//вертаємчисло(в виглядіречення)

return c;

}

/////////////////////////////////

voidcile::setS()

{

//зчитуємсистемучислення

cout<< "Vveditsustemychuslennya: ";

cin>> s;

}

/////////////////////////////////

voidcile::setC()

{

//зчислюємчисло

cout<< "Vveditchuslo: ";

cin>> c;

}

/////////////////////////////////

voidcile::desyatkova()

{

inti, k, z;

double n;

i = k = 0;//онулюєм

while(c[i] != '\0')//поки не дойдем до кінцяречення

i++;//збільшуємлічильник

n = i;//запамятовуємкількість

i = 0;

while(c[i] != '\0')

{

z = c[i] - '0';//беремоелемент з цілого числа

if(z > 10)//якщовонобільше за 10

z -= 7;//віднімаєм 7 для правиельності

k += z * pow(s, n - 1);//множим на степіньсистемичислення

n--;//зменшуємступінь

i++;//йдем до наступногоелемента

}

cout<< "Decyatkoveznachennya = " << k <<endl<<endl;//виводим результат

}

/////////////////////////////////

voidcile::sustema()

{

inti = 0, k, z, n;

charmas[MAX * 2];//додаткровиймасив для тимчасовогозбереження результату

k = atoi(c);//перетворюємречення в число

while(k)//поки к недорівнює 0

{

z = k % s;//берем остачувідділення

if(z < 10)//якщо вона менша за 10

mas[i++] = z + '0';//записуємїї СИМВОЛ в масив

else//якщобільшазаписуєм з деякоювідмінністю

mas[i++] = z + 'A' - 10;

k /= s;//ділим число на систему числення

}

n = i;//запамятовуємкількість

int j = 0;

while(i > 0)//поки не дойдем до початку додатковогомасиву

{

c[j] = mas[i - 1];//копіюєм в данікласу

j++;//збільшуєм

i--;//зменшуєм

}

c[j] = '\0';//в кінці ставим нуль символ

//виводим

cout<< "z 10 v " << s << " = " << c <<endl<<endl;

}

/////////////////////////////////

int main()

{

//оголошуємобєкткласу

cile a;

//викликаємфункції для заданнясистемичислення

//і числа

a.setC();

a.setS();

//виводим на екран результат претворення в десяткову

//систему числення

a.desyatkova();

//берем в іншійсистемічислення

a.sustema();

//виводим наше число

cout<<a.getC();

//очищуєм буфер

fflush(stdin);

//затримка

getchar();

//вертаєм 0

return 0;

}

Соседние файлы в папке Операційні системи Зербіно Д.Д.