Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <string.h>
- using namespace std;
- class Number
- {
- public:
- Number()
- {
- value = 0;
- }
- int getValue() const
- {
- return value;
- }
- protected:
- int value;
- };
- class RomanNumber : public Number
- {
- public:
- RomanNumber(const char *c)
- {
- if (strcmp(c, "I") == 0)
- value = 1;
- else if (strcmp(c, "II") == 0)
- value = 2;
- else if (strcmp(c, "III") == 0)
- value = 3;
- else if (strcmp(c, "IV") == 0)
- value = 4;
- else if (strcmp(c, "V") == 0)
- value = 5;
- else if (strcmp(c, "VI") == 0)
- value = 6;
- else if (strcmp(c, "VII") == 0)
- value = 7;
- else if (strcmp(c, "VIII") == 0)
- value = 8;
- else if (strcmp(c, "IX") == 0)
- value = 9;
- else if (strcmp(c, "X") == 0)
- value = 10;
- }
- };
- class ArabicNumber : public Number
- {
- public:
- ArabicNumber(const char *c)
- {
- value = atoi(c);
- }
- };
- int main()
- {
- Number *l, *r;
- char x[256], y[256], oper;
- int rezult;
- cin >> x >> oper >> y;
- if (x[0] >= '0' && x[0] <= '9')
- l = new ArabicNumber(x);
- else
- l = new RomanNumber(x);
- if (y[0] >= '0' && y[0] <= '9')
- r = new ArabicNumber(y);
- else
- r = new RomanNumber(y);
- switch (oper)
- {
- case '+':
- rezult = l->getValue() + r->getValue();
- break;
- case '-':
- rezult = l->getValue() - r->getValue();
- break;
- case '*':
- rezult = l->getValue() * r->getValue();
- break;
- case '/':
- rezult = l->getValue() / r->getValue();
- break;
- }
- cout << l->getValue() << ' ' << oper << ' ' << r->getValue() << " = " << rezult << endl;
- delete l;
- delete r;
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment