SHARE
TWEET

Untitled

a guest Oct 21st, 2019 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top