Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. bool checkNumber(char number[])
  8. {
  9. int timesI = 0, timesV = 0, timesX = 0, timesL = 0, timesC = 0, timesD = 0, timesM = 0;
  10. bool itsValid = false;
  11.  
  12. for(int i = 0; number[i] != '\0'; i++)
  13. {
  14. if(number[i] == 'I' || number[i] == 'i')
  15. {
  16. timesI++;
  17. }
  18. else if(number[i] == 'V' || number[i] == 'v')
  19. {
  20. timesV++;
  21. }
  22. else if(number[i] == 'X' || number[i] == 'x')
  23. {
  24. timesX++;
  25. }
  26. else if(number[i] == 'L' || number[i] == 'l')
  27. {
  28. timesL++;
  29. }
  30. else if(number[i] == 'C' || number[i] == 'c')
  31. {
  32. timesC++;
  33. }
  34. else if(number[i] == 'D' || number[i] == 'd')
  35. {
  36. timesD++;
  37. }
  38. else if(number[i] == 'M' || number[i] == 'm')
  39. {
  40. timesM++;
  41. }
  42. }
  43.  
  44. if(timesI > 3 || timesV > 3 || timesL > 3 || timesC > 3 || timesD > 3 || timesM > 3)
  45. {
  46. itsValid = false;
  47. }
  48. else
  49. {
  50. itsValid = true;
  51. }
  52.  
  53. return itsValid;
  54. }
  55.  
  56. int convertIntoInteger(char number[])
  57. {
  58. int convertedNumber = 0;
  59.  
  60. for(int i = 0; number[i] != '\0'; i++)
  61. {
  62. if(number[i] == 'I' || number[i] == 'i')
  63. {
  64. 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')
  65. {
  66. convertedNumber += 1;
  67. }
  68. else if(number[i + 1] == 'V' || number[i + 1] == 'v')
  69. {
  70. convertedNumber += 4;
  71. i++;
  72. }
  73. else if(number[i + 1] == 'X' || number[i + 1] == 'x')
  74. {
  75. convertedNumber += 9;
  76. i++;
  77. }
  78. else if(number[i + 1] == 'L' || number[i + 1] == 'l')
  79. {
  80. convertedNumber += 49;
  81. i++;
  82. }
  83. else if(number[i + 1] == 'C' || number[i + 1] == 'c')
  84. {
  85. convertedNumber += 99;
  86. i++;
  87. }
  88. else if(number[i + 1] == 'D' || number[i + 1] == 'd')
  89. {
  90. convertedNumber += 499;
  91. i++;
  92. }
  93. else if(number[i + 1] == 'M' || number[i + 1] == 'm')
  94. {
  95. convertedNumber += 999;
  96. i++;
  97. }
  98. }
  99. else if(number[i] == 'V' || number[i] == 'v')
  100. {
  101. convertedNumber += 5;
  102. }
  103. else if(number[i] == 'X' || number[i] == 'x')
  104. {
  105. 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')
  106. {
  107. convertedNumber += 10;
  108. }
  109. else if(number[i + 1] == 'L' || number[i + 1] == 'l')
  110. {
  111. convertedNumber += 40;
  112. i++;
  113. }
  114. else if(number[i + 1] == 'C' || number[i + 1] == 'c')
  115. {
  116. convertedNumber += 90;
  117. i++;
  118. }
  119. else if(number[i + 1] == 'D' || number[i + 1] == 'd')
  120. {
  121. convertedNumber += 490;
  122. i++;
  123. }
  124. else if(number[i + 1] == 'M' || number[i + 1] == 'm')
  125. {
  126. convertedNumber += 990;
  127. i++;
  128. }
  129. }
  130. else if(number[i] == 'L' || number[i] == 'l')
  131. {
  132. convertedNumber += 50;
  133. }
  134. else if(number[i] == 'C' || number[i] == 'c')
  135. {
  136. if(number[i + 1] != 'D' && number[i + 1] != 'd' && number[i + 1] != 'M' && number[i + 1] != 'm')
  137. {
  138. convertedNumber += 100;
  139. }
  140. else if(number[i + 1] == 'D' || number[i + 1] == 'd')
  141. {
  142. convertedNumber += 400;
  143. i++;
  144. }
  145. else if(number[i + 1] == 'M' || number[i + 1] == 'm')
  146. {
  147. convertedNumber += 900;
  148. i++;
  149. }
  150. }
  151. else if(number[i] == 'D' || number[i] == 'd')
  152. {
  153. convertedNumber += 500;
  154. }
  155. else if(number[i] == 'M' || number[i] == 'm')
  156. {
  157. convertedNumber += 1000;
  158. }
  159. }
  160.  
  161. return convertedNumber;
  162. }
  163.  
  164. bool checkRomanEquation(char n1[], char n2[], char n3[], char op)
  165. {
  166. bool answer = false;
  167. int partialResult;
  168. int convertedNumber1, convertedNumber2, convertedNumber3;
  169.  
  170. convertedNumber1 = convertIntoInteger(n1);
  171. convertedNumber2 = convertIntoInteger(n2);
  172. convertedNumber3 = convertIntoInteger(n3);
  173.  
  174. if(op == '+')
  175. {
  176. partialResult = convertedNumber1 + convertedNumber2;
  177. }
  178. else if(op == '-')
  179. {
  180. partialResult= convertedNumber1 - convertedNumber2;
  181. }
  182. else if(op == '*')
  183. {
  184. partialResult = convertedNumber1 * convertedNumber2;
  185. }
  186. else if(op == '/')
  187. {
  188. partialResult = convertedNumber1 / convertedNumber2;
  189. }
  190.  
  191. if(partialResult == convertedNumber3)
  192. {
  193. answer = true;
  194. }
  195. else
  196. {
  197. answer = false;
  198. }
  199.  
  200. return answer;
  201. }
  202.  
  203. int main()
  204. {
  205. char n1[100], n2[100], n3[100];
  206. char op;
  207.  
  208. printf("Insira o primeiro numero romano:\n");
  209. scanf("%s", n1);
  210. if(checkNumber(n1) == false)
  211. {
  212. do
  213. {
  214. printf("Insira um numero valido:\n");
  215. scanf("%s", n1);
  216. }while(checkNumber(n1) == false);
  217. }
  218. printf("Insira o operador:\n");
  219. scanf(" %c", &op);
  220. if(op != '+' && op != '-' && op != '*' && op != '/')
  221. {
  222. do
  223. {
  224. printf("Insira um operador valido:\n");
  225. scanf(" %c", &op);
  226. }while(op != '+' && op != '-' && op != '*' && op != '/');
  227. }
  228. printf("Insira o segundo numero romano:\n");
  229. scanf("%s", n2);
  230. if(checkNumber(n2) == false)
  231. {
  232. do
  233. {
  234. printf("Insira um numero valido:\n");
  235. scanf("%s", n2);
  236. }while(checkNumber(n2) == false);
  237. }
  238. printf("Insira o resultado da operacao:\n");
  239. scanf("%s", n3);
  240. if(checkNumber(n3) == false)
  241. {
  242. do
  243. {
  244. printf("Insira um numero valido:\n");
  245. scanf("%s", n3);
  246. }while(checkNumber(n3) == false);
  247. }
  248.  
  249. if(checkRomanEquation(n1, n2, n3, op) == true)
  250. {
  251. printf("A operacao esta correta.\n");
  252. }
  253. else
  254. {
  255. printf("A operacao esta errada\n");
  256. }
  257.  
  258. return 0;
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement