fork download
  1.  
  2. #include <iostream>
  3. #include <vector>
  4. #include <string>
  5. #include <iomanip>
  6. #include <numeric> // Tidak digunakan di versi ini, tapi bagus untuk sum
  7.  
  8. using namespace std;
  9.  
  10. void hitung_volume_donor_singkat() {
  11. int N, M; // N=desa, M=golongan
  12.  
  13. // 1. Baca N (jumlah desa) dan M (jumlah golongan)
  14. cout << "N (desa) M (golongan): ";
  15. if (!(cin >> N >> M)) return;
  16.  
  17. // 2. Baca Nama Golongan
  18. vector<string> nama_golongan(M);
  19. cout << "Nama " << M << " golongan (cth: A B O...): ";
  20. for (int i = 0; i < M; ++i) cin >> nama_golongan[i];
  21.  
  22. // Total volume untuk setiap golongan darah
  23. vector<double> total_volume(M, 0.0);
  24.  
  25. cout << "\nInput " << N << " desa, masing-masing " << M << " volume (ml):\n";
  26.  
  27. // 3. Loop input volume per desa
  28. for (int d = 0; d < N; ++d) {
  29. cout << "Desa " << d + 1 << ": ";
  30. for (int g = 0; g < M; ++g) {
  31. double volume;
  32. if (cin >> volume) {
  33. total_volume[g] += volume;
  34. } else {
  35. cerr << "Error input. Program berhenti." << endl;
  36. return;
  37. }
  38. }
  39. }
  40.  
  41. // 4. Output Hasil
  42. cout << fixed << setprecision(2);
  43. cout << "\n=== Total Volume per Golongan ===\n";
  44. for (int g = 0; g < M; ++g) {
  45. cout << nama_golongan[g] << ": " << total_volume[g] << " ml\n";
  46. }
  47. cout << "=================================\n";
  48. }
  49.  
  50. int main() {
  51. hitung_volume_donor_singkat();
  52. return 0;
  53. }
Success #stdin #stdout #stderr 0.01s 5288KB
stdin
2
2
2 4 
3 9
stdout
N (desa) M (golongan): Nama 2 golongan (cth: A B O...): 
Input 2 desa, masing-masing 2 volume (ml):
Desa 1: Desa 2: 
stderr
Error input. Program berhenti.