Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cstdio>
- #include <iostream>
- using namespace std;
- bool checkNumber(char number[])
- {
- int timesI = 0, timesV = 0, timesX = 0, timesL = 0, timesC = 0, timesD = 0, timesM = 0;
- bool itsValid = false;
- for(int i = 0; number[i] != '\0'; i++)
- {
- if(number[i] == 'I' || number[i] == 'i')
- {
- timesI++;
- }
- else if(number[i] == 'V' || number[i] == 'v')
- {
- timesV++;
- }
- else if(number[i] == 'X' || number[i] == 'x')
- {
- timesX++;
- }
- else if(number[i] == 'L' || number[i] == 'l')
- {
- timesL++;
- }
- else if(number[i] == 'C' || number[i] == 'c')
- {
- timesC++;
- }
- else if(number[i] == 'D' || number[i] == 'd')
- {
- timesD++;
- }
- else if(number[i] == 'M' || number[i] == 'm')
- {
- timesM++;
- }
- }
- if(timesI > 3 || timesV > 3 || timesL > 3 || timesC > 3 || timesD > 3 || timesM > 3)
- {
- itsValid = false;
- }
- else
- {
- itsValid = true;
- }
- return itsValid;
- }
- int convertIntoInteger(char number[])
- {
- int convertedNumber = 0;
- for(int i = 0; number[i] != '\0'; i++)
- {
- if(number[i] == 'I' || number[i] == 'i')
- {
- if(number[i + 1] != 'V' && number[i + 1] != 'v' && number[i + 1] != 'X' && number[i + 1] != 'x' && number[i + 1] != 'L' && number[i + 1] != 'l' && number[i + 1] != 'C' && number[i + 1] != 'c' && number[i + 1] != 'D' && number[i + 1] != 'd' && number[i + 1] != 'M' && number[i + 1] != 'm')
- {
- convertedNumber += 1;
- }
- else if(number[i + 1] == 'V' || number[i + 1] == 'v')
- {
- convertedNumber += 4;
- i++;
- }
- else if(number[i + 1] == 'X' || number[i + 1] == 'x')
- {
- convertedNumber += 9;
- i++;
- }
- else if(number[i + 1] == 'L' || number[i + 1] == 'l')
- {
- convertedNumber += 49;
- i++;
- }
- else if(number[i + 1] == 'C' || number[i + 1] == 'c')
- {
- convertedNumber += 99;
- i++;
- }
- else if(number[i + 1] == 'D' || number[i + 1] == 'd')
- {
- convertedNumber += 499;
- i++;
- }
- else if(number[i + 1] == 'M' || number[i + 1] == 'm')
- {
- convertedNumber += 999;
- i++;
- }
- }
- else if(number[i] == 'V' || number[i] == 'v')
- {
- convertedNumber += 5;
- }
- else if(number[i] == 'X' || number[i] == 'x')
- {
- if(number[i + 1] != 'L' && number[i + 1] != 'l' && number[i + 1] != 'C' && number[i + 1] != 'c' && number[i + 1] != 'D' && number[i + 1] != 'd' && number[i + 1] != 'M'&& number[i + 1] != 'm')
- {
- convertedNumber += 10;
- }
- else if(number[i + 1] == 'L' || number[i + 1] == 'l')
- {
- convertedNumber += 40;
- i++;
- }
- else if(number[i + 1] == 'C' || number[i + 1] == 'c')
- {
- convertedNumber += 90;
- i++;
- }
- else if(number[i + 1] == 'D' || number[i + 1] == 'd')
- {
- convertedNumber += 490;
- i++;
- }
- else if(number[i + 1] == 'M' || number[i + 1] == 'm')
- {
- convertedNumber += 990;
- i++;
- }
- }
- else if(number[i] == 'L' || number[i] == 'l')
- {
- convertedNumber += 50;
- }
- else if(number[i] == 'C' || number[i] == 'c')
- {
- if(number[i + 1] != 'D' && number[i + 1] != 'd' && number[i + 1] != 'M' && number[i + 1] != 'm')
- {
- convertedNumber += 100;
- }
- else if(number[i + 1] == 'D' || number[i + 1] == 'd')
- {
- convertedNumber += 400;
- i++;
- }
- else if(number[i + 1] == 'M' || number[i + 1] == 'm')
- {
- convertedNumber += 900;
- i++;
- }
- }
- else if(number[i] == 'D' || number[i] == 'd')
- {
- convertedNumber += 500;
- }
- else if(number[i] == 'M' || number[i] == 'm')
- {
- convertedNumber += 1000;
- }
- }
- return convertedNumber;
- }
- bool checkRomanEquation(char n1[], char n2[], char n3[], char op)
- {
- bool answer = false;
- int partialResult;
- int convertedNumber1, convertedNumber2, convertedNumber3;
- convertedNumber1 = convertIntoInteger(n1);
- convertedNumber2 = convertIntoInteger(n2);
- convertedNumber3 = convertIntoInteger(n3);
- if(op == '+')
- {
- partialResult = convertedNumber1 + convertedNumber2;
- }
- else if(op == '-')
- {
- partialResult= convertedNumber1 - convertedNumber2;
- }
- else if(op == '*')
- {
- partialResult = convertedNumber1 * convertedNumber2;
- }
- else if(op == '/')
- {
- partialResult = convertedNumber1 / convertedNumber2;
- }
- if(partialResult == convertedNumber3)
- {
- answer = true;
- }
- else
- {
- answer = false;
- }
- return answer;
- }
- int main()
- {
- char n1[100], n2[100], n3[100];
- char op;
- printf("Insira o primeiro numero romano:\n");
- scanf("%s", n1);
- if(checkNumber(n1) == false)
- {
- do
- {
- printf("Insira um numero valido:\n");
- scanf("%s", n1);
- }while(checkNumber(n1) == false);
- }
- printf("Insira o operador:\n");
- scanf(" %c", &op);
- if(op != '+' && op != '-' && op != '*' && op != '/')
- {
- do
- {
- printf("Insira um operador valido:\n");
- scanf(" %c", &op);
- }while(op != '+' && op != '-' && op != '*' && op != '/');
- }
- printf("Insira o segundo numero romano:\n");
- scanf("%s", n2);
- if(checkNumber(n2) == false)
- {
- do
- {
- printf("Insira um numero valido:\n");
- scanf("%s", n2);
- }while(checkNumber(n2) == false);
- }
- printf("Insira o resultado da operacao:\n");
- scanf("%s", n3);
- if(checkNumber(n3) == false)
- {
- do
- {
- printf("Insira um numero valido:\n");
- scanf("%s", n3);
- }while(checkNumber(n3) == false);
- }
- if(checkRomanEquation(n1, n2, n3, op) == true)
- {
- printf("A operacao esta correta.\n");
- }
- else
- {
- printf("A operacao esta errada\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement