Advertisement
kutuzzzov

Урок 2 Зови по имени

Mar 1st, 2023
952
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. // не меняйте файлы json.h и json.cpp
  2. #include "json.h"
  3.  
  4. #include <algorithm>
  5. #include <fstream>
  6. #include <iostream>
  7. #include <string_view>
  8. #include <vector>
  9.  
  10. using namespace std;
  11.  
  12. struct Spending {
  13.     string category;
  14.     int amount;
  15. };
  16.  
  17. int CalculateTotalSpendings(const vector<Spending>& spendings) {
  18.     int result = 0;
  19.     for (const Spending& s : spendings) {
  20.         result += s.amount;
  21.     }
  22.     return result;
  23. }
  24.  
  25. string FindMostExpensiveCategory(const vector<Spending>& spendings) {
  26.     auto compare_by_amount = [](const Spending& lhs, const Spending& rhs) {
  27.         return lhs.amount < rhs.amount;
  28.     };
  29.     return max_element(begin(spendings), end(spendings), compare_by_amount)->category;
  30. }
  31.  
  32. vector<Spending> LoadFromJson(istream& input) {
  33.     std::vector<Spending> result;
  34.     auto knot = Load(input).GetRoot().AsArray();
  35.     for (const auto& data : knot) {
  36.         int amount = data.AsMap().at("amount").AsInt();
  37.         std::string category = data.AsMap().at("category").AsString();
  38.         result.push_back({ category, amount });
  39.     }
  40.     return result;
  41. }
  42.  
  43. int main() {
  44.     // не меняйте main
  45.     const vector<Spending> spendings = LoadFromJson(cin);
  46.     cout << "Total "sv << CalculateTotalSpendings(spendings) << '\n';
  47.     cout << "Most expensive is "sv << FindMostExpensiveCategory(spendings) << '\n';
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement