PikingFish

Untitled

Jun 10th, 2021 (edited)
72
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void MostPopular(string dbName)
  2. {
  3. string tabName("Orders");
  4. dbmsLib::DBTableTxt tab; //empty tab
  5. string path = "..\\" + dbName + "\\"; //Путь к таблице
  6. tab.ReadDBTable(path + tabName + ".txt"); //Читаем по пути
  7.  
  8. int year;
  9. cout << "За какой год сделать сравнение: ";
  10. cin >> year;
  11.  
  12. vector<int> OrdersIDinYear;
  13.  
  14. for (int i = 0; i < tab.GetSize(); i++) {
  15. dbmsLib::Row nowrow = tab.GetRow(i);
  16. dbmsLib::DBDate nowdate = *(dbmsLib::DBDate*)nowrow["OrderDate"];
  17. if (nowdate.GetYear() == year)
  18. OrdersIDinYear.push_back(*(int*)nowrow["OrderID"]);
  19. }
  20.  
  21. dbmsLib::DBTableTxt tab2;
  22. tab2.ReadDBTable("..\\" + dbName + "\\" + "OrderDetails.txt");
  23.  
  24. map<string, int> productCount; //Контейнер количество по названию продукта
  25. for (int i = 0; i < tab2.GetSize(); i++) {
  26. dbmsLib::Row nowrow = tab2.GetRow(i);
  27. int OrdId = *(int*)nowrow["OrderID"];
  28. string index = *(string*)nowrow["ProductID"];
  29.  
  30. if (find(OrdersIDinYear.begin(), OrdersIDinYear.end(), OrdId) != end(OrdersIDinYear))
  31. productCount[index] += *(int*)nowrow["Quantity"];
  32. }
  33.  
  34. auto rez = max_element(productCount.begin(), productCount.end(),
  35. [](const pair<string, int>& p1, const pair<string, int>& p2) {
  36. return p1.second < p2.second; }); // Ищем максимальный элемент
  37. cout << "Самым продаваемым продуктом был " << rez->first << endl;
  38. cout << "Его купили " << rez->second << " раз" << endl;
  39. }
  40.  
RAW Paste Data Copied