Guest User

Untitled

a guest
Jun 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <functional>
  3. #include <map>
  4.  
  5. void inputArray(int &size, int*& array, bool &was)
  6. {
  7. std::cout << "Input array size: ";
  8. std::cin >> size;
  9.  
  10. std::cout << "Input integer array of " << size << " size:" << std::endl;
  11.  
  12. if (was)
  13. {
  14. delete[] array;
  15. }
  16. array = new int[size];
  17. was = true;
  18.  
  19. for (int i = 0; i < size; ++i)
  20. {
  21. std::cout << "item " << i << ": ";
  22. std::cin >> array[i];
  23. }
  24. }
  25.  
  26. void printArray(int &size, int*& array, bool &was)
  27. {
  28. if (was)
  29. {
  30. std::cout << "Integer array [";
  31. std::cout << array[0];
  32. for (int i = 1; i < size; ++i)
  33. {
  34. std::cout << ", " << array[i];
  35. }
  36. std::cout << "]" << std::endl;
  37. }
  38. }
  39.  
  40. void sumArray(int &size, int*& array, bool &was)
  41. {
  42. if (was)
  43. {
  44. int result = 0;
  45. for (int i = 0; i < size; ++i)
  46. {
  47. result += array[i];
  48. }
  49. std::cout << "Sum of items is " << result << std::endl;
  50. }
  51. }
  52.  
  53. void quit(int* array, bool &was)
  54. {
  55. if (was)
  56. {
  57. delete[] array;
  58. }
  59. }
  60.  
  61. class QuitEx{};
  62.  
  63. int main()
  64. {
  65. bool was = false;
  66. int* array = 0;
  67. int size = 0;
  68.  
  69. std::map<int, std::function<void()> > cmds;
  70.  
  71. cmds[1] = [&size, &array, &was]()
  72. {
  73. inputArray(size, array, was);
  74. };
  75.  
  76. cmds[2] = [&size, &array, &was]()
  77. {
  78. printArray(size, array, was);
  79. };
  80.  
  81. cmds[3] = [&size, &array, &was]()
  82. {
  83. sumArray(size, array, was);
  84. };
  85. cmds[4] = [&array, &was]()
  86. {
  87. quit(array, was);
  88. throw QuitEx();
  89. };
  90.  
  91. try
  92. {
  93. while (true)
  94. {
  95. int select;
  96.  
  97. std::cin >> select;
  98.  
  99. cmds[select]();
  100. }
  101. }
  102. catch (QuitEx const&)
  103. {
  104. }
  105. return 0;
  106. }
Add Comment
Please, Sign In to add comment