Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- #include <random>
- #include <cstdlib>
- #include <ctime>
- #include <limits>
- #include <math.h>
- #include <vector>
- #include <string>
- int generateArrayManual(std::map<int, std::map<int, float>>& map, int row, int col);
- int generateArrayRandom(std::map<int, std::map<int, float>>& map, int row, int col);
- 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);
- int adjustArray(std::map<int, std::map<int, float> >& map, std::map<int, float>& arr, int row, int col);
- int printArray(std::map<int, float>& arr, int row);
- int main()
- {
- // two dimensional key
- std::map<int, std::map<int, float> > map;
- // for accessing outer map
- std::map<int, std::map<int, float> >::iterator itr;
- // for accessing inner map
- std::map<int, float>::iterator ptr;
- // one dimensional map for results
- std::map<int, float> arr;
- int col{};
- int row{};
- std::string checkIfRand;
- std::cout << "Matejs Viesturs Andersons 10. grupa 181RDB237" << std::endl;
- bool valid = false;
- while (!valid)
- {
- valid = true;
- std::cout << "Ievadiet rindu daudzumu: ";
- std::cin >> row;
- if (std::cin.fail())
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza. ";
- valid = false;
- }
- else if (std::cin.rdbuf()->in_avail() > 1)
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza ";
- valid = false;
- }
- }
- bool validTwo = false;
- while (!validTwo)
- {
- validTwo = true;
- std::cout << "Ievadiet kolonnu daudzumu: ";
- std::cin >> col;
- if (std::cin.fail())
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza. ";
- validTwo = false;
- }
- else if (std::cin.rdbuf()->in_avail() > 1)
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza. ";
- validTwo = false;
- }
- }
- std::cout << "Ja velaties generet random skaitlus matrica, rakstiet \"-rand\": " << std::endl;
- std::cin >> checkIfRand;
- if (checkIfRand == "-rand")
- {
- generateArrayRandom(map, row, col);
- }
- else
- {
- generateArrayManual(map, row, col);
- }
- outputOfArray(map, itr, ptr);
- adjustArray(map, arr, row, col);
- printArray(arr, row);
- return 0;
- }
- int generateArrayRandom(std::map<int, std::map<int, float>>& map, int row, int col)
- {
- float r;
- srand(time(0));
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < col; j++) {
- r = (rand() / (float)RAND_MAX * 100) - 50;
- map[i][j] = r;
- }
- }
- return 0;
- }
- int generateArrayManual(std::map<int, std::map<int, float>>& map, int row, int col)
- {
- std::cout << "Ievadiet elementus: " << std::endl;
- float element;
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < col; j++) {
- bool valid = false;
- while (!valid)
- {
- valid = true;
- std::cin >> element;
- if (std::cin.fail())
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza, ievadiet derigus skaitlus: ";
- valid = false;
- }
- else if (std::cin.rdbuf()->in_avail() > 1)
- {
- std::cin.clear();
- std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
- std::cout << "Ievade nav pareiza, ievadiet derigus skaitlus: ";
- valid = false;
- }
- }
- map[i][j] = element;
- }
- }
- std::cout << std::endl;
- return 0;
- }
- 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)
- {
- std::cout.precision(2);
- std::cout << std::fixed;
- for (itr = map.begin(); itr != map.end(); itr++) {
- for (ptr = itr->second.begin(); ptr != itr->second.end(); ptr++) {
- std::cout << ptr->second << "\t";
- }
- std::cout << std::endl;
- std::cout << std::endl;
- }
- return 0;
- }
- int adjustArray(std::map<int, std::map<int, float> >& map, std::map<int, float>& arr, int row, int col)
- {
- int sum = 0;
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < col; j++) {
- if (map[i][j] < 0) {
- sum = sum + 1;
- }
- }
- arr[i] = sum;
- sum = 0;
- }
- return 0;
- }
- int printArray(std::map<int, float>& arr, int row)
- {
- std::cout.precision(0);
- std::cout << std::fixed;
- for (int j = 0; j < row; j++) {
- std::cout << "Negativo elementu skaits rinda " << j + 1 << " : " << arr[j] << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement