fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. typedef struct {
  6. char simbol[3];
  7. int jumlah;
  8. } Unsur;
  9.  
  10. int main() {
  11. char senyawa[256];
  12. printf("Masukkan senyawa kimia: ");
  13. scanf("%s", senyawa); // baca satu string senyawa
  14.  
  15. Unsur unsur[100];
  16. int count = 0, n = strlen(senyawa);
  17.  
  18. for (int i = 0; i < n; ) {
  19. if (isupper(senyawa[i])) {
  20. char simbol[3] = {senyawa[i++], 0, 0};
  21. if (i < n && islower(senyawa[i])) simbol[1] = senyawa[i++];
  22.  
  23. int jumlah = 0;
  24. while (i < n && isdigit(senyawa[i]))
  25. jumlah = jumlah * 10 + (senyawa[i++] - '0');
  26. if (jumlah == 0) jumlah = 1;
  27.  
  28. // Gabungkan jika unsur sudah ada
  29. int ada = 0;
  30. for (int j = 0; j < count; j++) {
  31. if (strcmp(unsur[j].simbol, simbol) == 0) {
  32. unsur[j].jumlah += jumlah;
  33. ada = 1;
  34. break;
  35. }
  36. }
  37. if (!ada) {
  38. strcpy(unsur[count].simbol, simbol);
  39. unsur[count++].jumlah = jumlah;
  40. }
  41. } else i++;
  42. }
  43.  
  44. for (int i = 0; i < count; i++)
  45. printf("%s %d\n", unsur[i].simbol, unsur[i].jumlah);
  46.  
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0.01s 5324KB
stdin
2H2O1
stdout
Masukkan senyawa kimia: H 2
O 1