fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. #include <unordered_map>
  5.  
  6. using namespace std;
  7.  
  8. // Fungsi untuk memeriksa apakah sebuah karakter adalah angka
  9. bool isDigit(char c) {
  10. return c >= '0' && c <= '9';
  11. }
  12.  
  13. // Fungsi untuk memeriksa apakah sebuah karakter adalah huruf kapital
  14. bool isCapital(char c) {
  15. return c >= 'A' && c <= 'Z';
  16. }
  17.  
  18. // Fungsi utama untuk menghitung atom
  19. unordered_map<char, int> hitungAtom(const string& senyawa) {
  20. unordered_map<char, int> jumlahAtom;
  21. int n = senyawa.length();
  22. int i = 0;
  23.  
  24. while (i < n) {
  25. // Cek apakah karakter adalah huruf kapital (awal unsur)
  26. if (isCapital(senyawa[i])) {
  27. char unsur = senyawa[i];
  28. i++;
  29.  
  30. // Cek apakah ada huruf kecil setelah huruf kapital (misalnya H2O, bukan H2o)
  31. while (i < n && islower(senyawa[i])) {
  32. i++; // Abaikan huruf kecil, karena hanya huruf kapital yang mewakili unsur
  33. }
  34.  
  35. // Cek apakah ada angka setelah unsur
  36. int jumlah = 0;
  37. if (i < n && isDigit(senyawa[i])) {
  38. while (i < n && isDigit(senyawa[i])) {
  39. jumlah = jumlah * 10 + (senyawa[i] - '0');
  40. i++;
  41. }
  42. } else {
  43. jumlah = 1; // Jika tidak ada angka, berarti hanya ada 1 atom
  44. }
  45.  
  46. jumlahAtom[unsur] += jumlah;
  47. } else {
  48. i++; // Abaikan karakter yang tidak dikenali
  49. }
  50. }
  51. return jumlahAtom;
  52. }
  53.  
  54. int main() {
  55. string rumus;
  56.  
  57. cout << "Masukkan rumus kimia (contoh: H2O, C6H12O6): ";
  58. cin >> rumus;
  59.  
  60. unordered_map<char, int> hasil = hitungAtom(rumus);
  61.  
  62. cout << "\nJumlah atom dalam senyawa " << rumus << ":" << endl;
  63. for (auto const& [unsur, jumlah] : hasil) {
  64. cout << " " << unsur << ": " << jumlah << endl;
  65. }
  66.  
  67. return 0;
  68. }
  69.  
Success #stdin #stdout 0.01s 5280KB
stdin
1 C 1 H 3 CI 1
stdout
Masukkan rumus kimia (contoh: H2O, C6H12O6): 
Jumlah atom dalam senyawa 1: