
ООП №11
By:
MustangUA on
May 2nd, 2012 | syntax:
C++ | size: 2.43 KB | hits: 23 | expires: Never
#include <iostream>
using namespace std;
class Chyslo {
private:
int number;
int base;
public:
Chyslo() {
number = 0;
base = 10;
}
Chyslo(int Input, int Base) {
if(Base == 2) {
number = decimal(Input);
} else {
number = Input;
}
base = Base;
}
void convert(int newbase)
{
base = newbase;
}
void display()
{
switch(base)
{
case 2: cout<<binary(number); break;
case 10: cout<<number; break;
case 16: cout<<hex<<number; break;
}
cout<<endl;
}
int getNumber() {
return number;
}
int getBase() {
return base;
}
Chyslo operator + (Chyslo b) {
int newbase;
if(base = b.base) {
newbase = base;
} else {
newbase = 10;
}
return Chyslo(getNumber() + b.getNumber(), newbase);
}
Chyslo operator - (Chyslo b) {
int newbase;
if(base = b.base) {
newbase = base;
} else {
newbase = 10;
}
return Chyslo(getNumber() - b.getNumber(), newbase);
}
Chyslo operator * (Chyslo b) {
int newbase;
if(base = b.base) {
newbase = base;
} else {
newbase = 10;
}
return Chyslo(getNumber() * b.getNumber(), newbase);
}
private:
int binary(int dec)
{
int bin = 0, pos = 1;
while(dec > 0)
{
bin = bin + (dec % 2) * pos;
dec = dec / 2;
pos *= 10;
}
return bin;
}
int decimal(int bin)
{
int dec = 0, pos = 0;
int factor = 1;
while(bin > 0)
{
if( (bin % 10) == 1)
{
dec += factor;
}
bin /= 10;
pos++;
factor = factor * 2;
}
return dec;
}
};
void main()
{
int enter, base;
char onemore = 'Y';
bool correct = true;
while(onemore == 'Y' || onemore == 'y') {
do {
cout<<"Vvedit' bazu (2, 10, 16)"<<endl;
try {
cin>>dec>>base;
if(base != 2 && base != 10 && base != 16) {
correct = false;
throw "Nevirna baza";
} else {
correct = true;
}
}
catch(char error[]) { cout<<error<<endl; }
} while(!correct);
cout<<"Vvedit' chyslo"<<endl;
try {
if(base == 16) {
cin>>hex>>enter;
} else {
cin>>dec>>enter;
}
if((int)enter <= 0 || (int)enter >= 65535) {
correct = false;
throw "Pomylka pry vvedeni";
}
}
catch (char error[]) {
cout<<error<<endl;
}
if(correct == true) {
Chyslo a(enter, base), b;
a.convert(10);
a.display();
cout<<"Shche? (Y - tak, N - ni)"<<endl;
cin>>onemore;
} else {
onemore = 'Y';
}
}
}