fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main() {
  7. int n; // jumlah pendonor
  8. cout << "Masukkan jumlah pendonor: ";
  9. cin >> n;
  10.  
  11. // Map dua tingkat: desa -> golongan darah -> (jumlah pendonor, total volume darah)
  12. map<int, map<string, pair<int, int>>> data;
  13.  
  14. for (int i = 0; i < n; i++) {
  15. int desa;
  16. string golDarah;
  17. int volume;
  18. cout << "Masukkan data pendonor ke-" << i+1 << " (desa golDarah volume[ml]): ";
  19. cin >> desa >> golDarah >> volume;
  20.  
  21. data[desa][golDarah].first++; // hitung jumlah pendonor
  22. data[desa][golDarah].second += volume; // hitung total volume darah
  23. }
  24.  
  25. cout << "\nJumlah pendonor dan total volume darah per golongan darah di tiap desa:\n";
  26. for (const auto& desa : data) {
  27. cout << "Desa " << desa.first << ":\n";
  28. for (const auto& gol : desa.second) {
  29. cout << " Golongan darah " << gol.first << ": "
  30. << gol.second.first << " pendonor, total volume "
  31. << gol.second.second << " ml\n";
  32. }
  33. }
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 5304KB
stdin
8
3
3 1 150
1 2 250
3 1 300
1 3 450
2 2 200
3 4 350
1 4 500
2 1 500
stdout
Masukkan jumlah pendonor: Masukkan data pendonor ke-1 (desa golDarah volume[ml]): Masukkan data pendonor ke-2 (desa golDarah volume[ml]): Masukkan data pendonor ke-3 (desa golDarah volume[ml]): Masukkan data pendonor ke-4 (desa golDarah volume[ml]): Masukkan data pendonor ke-5 (desa golDarah volume[ml]): Masukkan data pendonor ke-6 (desa golDarah volume[ml]): Masukkan data pendonor ke-7 (desa golDarah volume[ml]): Masukkan data pendonor ke-8 (desa golDarah volume[ml]): 
Jumlah pendonor dan total volume darah per golongan darah di tiap desa:
Desa 3:
  Golongan darah 3: 1 pendonor, total volume 1 ml
Desa 150:
  Golongan darah 1: 1 pendonor, total volume 2 ml
Desa 200:
  Golongan darah 3: 1 pendonor, total volume 4 ml
Desa 250:
  Golongan darah 3: 1 pendonor, total volume 1 ml
Desa 300:
  Golongan darah 1: 1 pendonor, total volume 3 ml
Desa 350:
  Golongan darah 1: 1 pendonor, total volume 4 ml
Desa 450:
  Golongan darah 2: 1 pendonor, total volume 2 ml
Desa 500:
  Golongan darah 2: 1 pendonor, total volume 1 ml