Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. // Первый вариант решения: через Switch
  2. function calculate(num1, operation, num2) {
  3. if(typeof num1 === 'number' && typeof num2 === 'number' && operation !== null){
  4. const result = (function(_operation) {
  5. switch(true){
  6. case (operation === '+') : return num1 + num2
  7. break
  8. case (operation === '-') : return num1 - num2
  9. break
  10. case (operation === '/') : return num1 / num2
  11. break
  12. case (operation === '*') : return num1 * num2
  13. break
  14. default: return null
  15. break
  16. }
  17. })(operation);
  18.  
  19. // возвращаем результат как того требует условие задачи
  20. switch(true){
  21. case ((result === Infinity)||(result === -Infinity)) : return null
  22. break
  23. case (result === -0) : return 0
  24. break
  25. default: return result
  26. break
  27. }
  28. }
  29. else{
  30. return null;
  31. }
  32. }
  33.  
  34. console.log(calculate(-4, "*", 0));
  35. console.log(calculate(2,"+", 4));
  36. console.log(calculate(6,"-", 1.5));
  37. console.log(calculate(49,"/", -7));
  38. console.log(calculate(8,"m", 2));
  39. console.log(calculate(4,"/",0));
  40.  
  41. // Это же решение, только используя тернарный оператор:
  42.  
  43. // function calculate(num1, operation, num2) {
  44. // if(typeof num1 === 'number' && typeof num2 === 'number' && operation !== null){
  45. // const result =
  46. // (operation === '+') ? num1 + num2 :
  47. // (operation === '-') ? num1 - num2 :
  48. // (operation === '/') ? num1 / num2 :
  49. // (operation === '*') ? num1 * num2 :
  50. // null;
  51.  
  52. // return condition =
  53. // ((result === Infinity)||(result === -Infinity)) ? null :
  54. // (result === -0) ? 0 :
  55. // result;
  56. // }
  57. // else{
  58. // return null;
  59. // }
  60. // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement