Advertisement
PavloSerg

Untitled

Apr 16th, 2023 (edited)
884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. struct mineral
  9. {
  10.     double hardness_min;
  11.     double hardness_max;
  12.     string cleavage;
  13.     string color;
  14.     string luminescence;
  15.     string name;
  16. };
  17.  
  18. vector<mineral> getFiltredMinerals(vector<mineral> inputMinerals, double hardness, string cleavage, string color, string luminescence)
  19. {
  20.     vector<mineral> filtredMinerals;
  21.     for (int i = 0; i < inputMinerals.size(); i++)
  22.     {
  23.         mineral currentMineral = inputMinerals[i];
  24.         bool sovpadaetHardness = inputMinerals[i].hardness_min <= hardness && hardness <= inputMinerals[i].hardness_max;
  25.         bool sovpadaetCleavage = inputMinerals[i].cleavage == cleavage;
  26.         bool sovpadaetColor = inputMinerals[i].color == color;
  27.         bool sovpadaetLuminescence = inputMinerals[i].luminescence == luminescence;
  28.         if (sovpadaetHardness && sovpadaetCleavage && sovpadaetColor && sovpadaetLuminescence)
  29.         {
  30.             filtredMinerals.push_back(currentMineral);
  31.         }
  32.     }
  33.     return filtredMinerals;
  34. }
  35.  
  36. int main()
  37. {
  38.     //setlocale(LC_ALL, "Russian");//Чтоб работал русский язык в консоли
  39.     system("chcp 1251");//Чтоб работал русский язык в консоли
  40.  
  41.     vector<mineral> minerals;
  42.     mineral diamond;
  43.     diamond.name = "Алмаз";
  44.     diamond.hardness_min = 10;
  45.     diamond.hardness_max = 10;
  46.     diamond.cleavage = "Совершенная";
  47.     diamond.color = "Бесцветный";
  48.     diamond.luminescence = "Алмазный";
  49.  
  50.     mineral galena;
  51.     galena.name = "Галенит";
  52.     galena.hardness_min = 2;
  53.     galena.hardness_max = 3;
  54.     galena.cleavage = "Совершенная";
  55.     galena.color = "Свинцово-серый";
  56.     galena.luminescence = "Металлический";
  57.  
  58.     mineral cinnabar;
  59.     cinnabar.name = "Киноварь";
  60.     cinnabar.hardness_min = 2;
  61.     cinnabar.hardness_max = 2.5;
  62.     cinnabar.cleavage = "Совершенная";
  63.     cinnabar.color = "Красный";
  64.     cinnabar.luminescence = "Полуметаллический";
  65.  
  66.     mineral molibdenite;
  67.     molibdenite.name = "Молибденит";
  68.     molibdenite.hardness_min = 1;
  69.     molibdenite.hardness_max = 1;
  70.     molibdenite.cleavage = "Весьма совершенная";
  71.     molibdenite.color = "Свинцово-серый с голубым оттенком";
  72.     molibdenite.luminescence = "Металлический";
  73.  
  74.     mineral realgar;
  75.     realgar.name = "Реальгар";
  76.     realgar.hardness_min = 1.5;
  77.     realgar.hardness_max = 2;
  78.     realgar.cleavage = "Совершенная";
  79.     realgar.color = "Оранжевый";
  80.     realgar.luminescence = "Алмазный";
  81.  
  82.     mineral pyrite;
  83.     pyrite.name = "Пирит";
  84.     pyrite.hardness_min = 6;
  85.     pyrite.hardness_max = 6.5;
  86.     pyrite.cleavage = "Весьма несовершенная";
  87.     pyrite.color = "Латунно-желтый";
  88.     pyrite.luminescence = "Металлический";
  89.  
  90.     mineral cassiterite;
  91.     cassiterite.name = "Касситерит";
  92.     cassiterite.hardness_min = 6;
  93.     cassiterite.hardness_max = 7;
  94.     cassiterite.cleavage = "Несовершенная";
  95.     cassiterite.color = "Черный";
  96.     cassiterite.luminescence = "Алмазный";
  97.  
  98.     mineral brucite;
  99.     brucite.name = "Брусит";
  100.     brucite.hardness_min = 2.5;
  101.     brucite.hardness_max = 2.5;
  102.     brucite.cleavage = "Весьма совершенная";
  103.     brucite.color = "Бело-голубой";
  104.     brucite.luminescence = "Стеклянный";
  105.  
  106.     mineral uvarovite;
  107.     uvarovite.name = "Уваровит";
  108.     uvarovite.hardness_min = 6.5;
  109.     uvarovite.hardness_max = 7.5;
  110.     uvarovite.cleavage = "Несовершенная";
  111.     uvarovite.color = "Изумрудно-зеленый";
  112.     uvarovite.luminescence = "Алмазный";
  113.  
  114.     mineral morganite;
  115.     morganite.name = "Морганит";
  116.     morganite.hardness_min = 7.5;
  117.     morganite.hardness_max = 8;
  118.     morganite.cleavage = "Несовершенная";
  119.     morganite.color = "Розовый";
  120.     morganite.luminescence = "Стеклянный";
  121.  
  122.     minerals.push_back(diamond);
  123.     minerals.push_back(galena);
  124.     minerals.push_back(cinnabar);
  125.     minerals.push_back(molibdenite);
  126.     minerals.push_back(realgar);
  127.     minerals.push_back(pyrite);
  128.     minerals.push_back(cassiterite);
  129.     minerals.push_back(brucite);
  130.     minerals.push_back(uvarovite);
  131.     minerals.push_back(morganite);
  132.  
  133.     double userHardness;
  134.     string userCleavage;
  135.     string userColor;
  136.     string userLuminescence;
  137.  
  138.     cout << "Введите твердость:";
  139.     cin >> userHardness;
  140.     cout << "Введите спайность:";
  141.     cin >> userCleavage;
  142.     cout << "Введите цвет:";
  143.     cin >> userColor;
  144.     cout << "Введите блеск:";
  145.     cin >> userLuminescence;
  146.  
  147.     vector<mineral> filtredMinerals = getFiltredMinerals
  148.     (
  149.         minerals,
  150.         userHardness,
  151.         userCleavage,
  152.         userColor,
  153.         userLuminescence
  154.     );
  155.  
  156.     //Пример ввода из скриншота
  157.     /*
  158. 6.5
  159. Несовершенная
  160. Изумрудно-зеленый
  161. Алмазный
  162.     */
  163.  
  164.     cout << "\n";
  165.     cout << "Найдены следующие минералы:\n";
  166.     for (int i = 0; i < filtredMinerals.size(); i++)
  167.     {
  168.         cout << "----------------" << endl;
  169.         cout << "name: " << filtredMinerals[i].name << endl;
  170.         cout << "hardness_min: " << filtredMinerals[i].hardness_min << endl;
  171.         cout << "hardness_max: " << filtredMinerals[i].hardness_max << endl;
  172.         cout << "cleavage: " << filtredMinerals[i].cleavage << endl;
  173.         cout << "color: " << filtredMinerals[i].color << endl;
  174.         cout << "luminescence: " << filtredMinerals[i].luminescence << endl;
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement