Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. #include <random>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <limits>
  7. #include <math.h>
  8. #include <vector>
  9. #include <string>
  10.  
  11.  
  12. int generateArrayManual(std::map<int, std::map<int, float>>& map, int row, int col);
  13. int generateArrayRandom(std::map<int, std::map<int, float>>& map, int row, int col);
  14. int outputOfArray(std::map<int, std::map<int, float>>& map, std::map<int, std::map<int, float> >::iterator& itr, std::map<int, float>::iterator& ptr);
  15. int adjustArray(std::map<int, std::map<int, float> >& map, std::map<int, float>& arr, int row, int col);
  16. int printArray(std::map<int, float>& arr, int row);
  17.  
  18. int main()
  19. {
  20. // two dimensional key
  21. std::map<int, std::map<int, float> > map;
  22.  
  23. // for accessing outer map
  24. std::map<int, std::map<int, float> >::iterator itr;
  25.  
  26. // for accessing inner map
  27. std::map<int, float>::iterator ptr;
  28.  
  29. // one dimensional map for results
  30. std::map<int, float> arr;
  31.  
  32. int col{};
  33. int row{};
  34. std::string checkIfRand;
  35.  
  36. std::cout << "Matejs Viesturs Andersons 10. grupa 181RDB237" << std::endl;
  37.  
  38. bool valid = false;
  39. while (!valid)
  40. {
  41. valid = true;
  42. std::cout << "Ievadiet rindu daudzumu: ";
  43. std::cin >> row;
  44. if (std::cin.fail())
  45. {
  46. std::cin.clear();
  47. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  48. std::cout << "Ievade nav pareiza. ";
  49. valid = false;
  50. }
  51. else if (std::cin.rdbuf()->in_avail() > 1)
  52. {
  53. std::cin.clear();
  54. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  55. std::cout << "Ievade nav pareiza ";
  56. valid = false;
  57. }
  58. }
  59. bool validTwo = false;
  60. while (!validTwo)
  61. {
  62. validTwo = true;
  63. std::cout << "Ievadiet kolonnu daudzumu: ";
  64. std::cin >> col;
  65. if (std::cin.fail())
  66. {
  67. std::cin.clear();
  68. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  69. std::cout << "Ievade nav pareiza. ";
  70. validTwo = false;
  71. }
  72. else if (std::cin.rdbuf()->in_avail() > 1)
  73. {
  74. std::cin.clear();
  75. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  76. std::cout << "Ievade nav pareiza. ";
  77. validTwo = false;
  78. }
  79. }
  80.  
  81. std::cout << "Ja velaties generet random skaitlus matrica, rakstiet \"-rand\": " << std::endl;
  82. std::cin >> checkIfRand;
  83. if (checkIfRand == "-rand")
  84. {
  85. generateArrayRandom(map, row, col);
  86. }
  87. else
  88. {
  89. generateArrayManual(map, row, col);
  90. }
  91.  
  92. outputOfArray(map, itr, ptr);
  93. adjustArray(map, arr, row, col);
  94. printArray(arr, row);
  95.  
  96. return 0;
  97. }
  98.  
  99. int generateArrayRandom(std::map<int, std::map<int, float>>& map, int row, int col)
  100. {
  101. float r;
  102. srand(time(0));
  103. for (int i = 0; i < row; i++) {
  104. for (int j = 0; j < col; j++) {
  105. r = (rand() / (float)RAND_MAX * 100) - 50;
  106. map[i][j] = r;
  107. }
  108. }
  109. return 0;
  110. }
  111.  
  112. int generateArrayManual(std::map<int, std::map<int, float>>& map, int row, int col)
  113. {
  114. std::cout << "Ievadiet elementus: " << std::endl;
  115. float element;
  116. for (int i = 0; i < row; i++) {
  117. for (int j = 0; j < col; j++) {
  118. bool valid = false;
  119. while (!valid)
  120. {
  121. valid = true;
  122. std::cin >> element;
  123. if (std::cin.fail())
  124. {
  125. std::cin.clear();
  126. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  127. std::cout << "Ievade nav pareiza, ievadiet derigus skaitlus: ";
  128. valid = false;
  129. }
  130. else if (std::cin.rdbuf()->in_avail() > 1)
  131. {
  132. std::cin.clear();
  133. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  134. std::cout << "Ievade nav pareiza, ievadiet derigus skaitlus: ";
  135. valid = false;
  136. }
  137. }
  138. map[i][j] = element;
  139. }
  140. }
  141. std::cout << std::endl;
  142. return 0;
  143. }
  144.  
  145. int outputOfArray(std::map<int, std::map<int, float>>& map, std::map<int, std::map<int, float> >::iterator& itr, std::map<int, float>::iterator& ptr)
  146. {
  147. std::cout.precision(2);
  148. std::cout << std::fixed;
  149. for (itr = map.begin(); itr != map.end(); itr++) {
  150. for (ptr = itr->second.begin(); ptr != itr->second.end(); ptr++) {
  151. std::cout << ptr->second << "\t";
  152. }
  153. std::cout << std::endl;
  154. std::cout << std::endl;
  155. }
  156. return 0;
  157. }
  158.  
  159. int adjustArray(std::map<int, std::map<int, float> >& map, std::map<int, float>& arr, int row, int col)
  160. {
  161. int sum = 0;
  162. for (int i = 0; i < row; i++) {
  163. for (int j = 0; j < col; j++) {
  164. if (map[i][j] < 0) {
  165. sum = sum + 1;
  166. }
  167. }
  168. arr[i] = sum;
  169. sum = 0;
  170. }
  171. return 0;
  172. }
  173.  
  174. int printArray(std::map<int, float>& arr, int row)
  175. {
  176. std::cout.precision(0);
  177. std::cout << std::fixed;
  178. for (int j = 0; j < row; j++) {
  179. std::cout << "Negativo elementu skaits rinda " << j + 1 << " : " << arr[j] << std::endl;
  180. }
  181. return 0;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement