fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. // Struktur untuk menyimpan data satu pendonor
  6. struct Pendonor {
  7. int desa;
  8. std::string golongan_darah;
  9. int volume; // ml
  10. };
  11.  
  12. void run_program() {
  13. int N, M; // N=Jumlah DDS (max 1000), M=Jumlah Desa (max 10)
  14.  
  15. // 1. Baca N dan M
  16. if (!(std::cin >> N >> M)) return;
  17.  
  18. // Batasan input (Opsional, tapi disarankan)
  19. if (N < 0 || N > 1000 || M < 0 || M > 10) {
  20. std::cerr << "Peringatan: N atau M di luar batas yang ditentukan." << std::endl;
  21. return;
  22. }
  23.  
  24. std::vector<Pendonor> data_pendonor;
  25. data_pendonor.reserve(N);
  26.  
  27. // 2. Baca N baris data pendonor
  28. for (int i = 0; i < N; ++i) {
  29. Pendonor p;
  30.  
  31. // Membaca Kode Desa, Golongan Darah, dan Volume Darah
  32. if (!(std::cin >> p.desa >> p.golongan_darah >> p.volume)) {
  33. std::cerr << "Error input data pendonor ke-" << i + 1 << std::endl;
  34. break; // Keluar dari loop jika ada kesalahan input
  35. }
  36.  
  37. // Pengecekan Batasan Data (Opsional)
  38. if (p.desa < 1 || p.desa > M) {
  39. std::cerr << "Peringatan: Kode desa tidak valid (" << p.desa << ") pada baris " << i + 1 << std::endl;
  40. }
  41. if (p.volume < 0 || p.volume > 500) {
  42. std::cerr << "Peringatan: Volume darah tidak valid (" << p.volume << " ml) pada baris " << i + 1 << std::endl;
  43. }
  44.  
  45. data_pendonor.push_back(p);
  46. }
  47.  
  48. // --- Output Data yang Tersimpan (Opsional, untuk verifikasi) ---
  49. std::cout << "\n--- Hasil Pembacaan ---\n";
  50. std::cout << "Total DDS: " << data_pendonor.size() << ", Total Desa: " << M << "\n";
  51. std::cout << "Desa | Gol. Darah | Volume (ml)\n";
  52. std::cout << "---------------------------------\n";
  53. for (const auto& p : data_pendonor) {
  54. std::cout << p.desa << " \t | " << p.golongan_darah << " \t | " << p.volume << "\n";
  55. }
  56. }
  57.  
  58. int main() {
  59. // Pengaturan I/O cepat
  60. std::ios_base::sync_with_stdio(false);
  61. std::cin.tie(NULL);
  62.  
  63. std::cout << "Masukkan N (jumlah DDS), M (jumlah desa), diikuti N baris data (Desa Golongan Volume):\n";
  64. run_program();
  65.  
  66. return 0;
  67. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Masukkan N (jumlah DDS), M (jumlah desa), diikuti N baris data (Desa Golongan Volume):