#include <stdio.h>
#include <string.h>
#include <ctype.h>
typedef struct {
char simbol[3];
int jumlah;
} Unsur;
int main() {
char senyawa[256];
printf("Masukkan senyawa kimia: "); scanf("%s", senyawa
); // baca satu string senyawa
Unsur unsur[100];
int count
= 0, n
= strlen(senyawa
);
for (int i = 0; i < n; ) {
char simbol[3] = {senyawa[i++], 0, 0};
if (i
< n
&& islower(senyawa
[i
])) simbol
[1] = senyawa
[i
++];
int jumlah = 0;
while (i
< n
&& isdigit(senyawa
[i
])) jumlah = jumlah * 10 + (senyawa[i++] - '0');
if (jumlah == 0) jumlah = 1;
// Gabungkan jika unsur sudah ada
int ada = 0;
for (int j = 0; j < count; j++) {
if (strcmp(unsur
[j
].
simbol, simbol
) == 0) { unsur[j].jumlah += jumlah;
ada = 1;
break;
}
}
if (!ada) {
strcpy(unsur
[count
].
simbol, simbol
); unsur[count++].jumlah = jumlah;
}
} else i++;
}
for (int i = 0; i < count; i++)
printf("%s %d\n", unsur
[i
].
simbol, unsur
[i
].
jumlah);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyIHNpbWJvbFszXTsKICAgIGludCBqdW1sYWg7Cn0gVW5zdXI7CgppbnQgbWFpbigpIHsKICAgIGNoYXIgc2VueWF3YVsyNTZdOwogICAgcHJpbnRmKCJNYXN1a2thbiBzZW55YXdhIGtpbWlhOiAiKTsKICAgIHNjYW5mKCIlcyIsIHNlbnlhd2EpOyAvLyBiYWNhIHNhdHUgc3RyaW5nIHNlbnlhd2EKCiAgICBVbnN1ciB1bnN1clsxMDBdOwogICAgaW50IGNvdW50ID0gMCwgbiA9IHN0cmxlbihzZW55YXdhKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICkgewogICAgICAgIGlmIChpc3VwcGVyKHNlbnlhd2FbaV0pKSB7CiAgICAgICAgICAgIGNoYXIgc2ltYm9sWzNdID0ge3Nlbnlhd2FbaSsrXSwgMCwgMH07CiAgICAgICAgICAgIGlmIChpIDwgbiAmJiBpc2xvd2VyKHNlbnlhd2FbaV0pKSBzaW1ib2xbMV0gPSBzZW55YXdhW2krK107CgogICAgICAgICAgICBpbnQganVtbGFoID0gMDsKICAgICAgICAgICAgd2hpbGUgKGkgPCBuICYmIGlzZGlnaXQoc2VueWF3YVtpXSkpIAogICAgICAgICAgICAgICAganVtbGFoID0ganVtbGFoICogMTAgKyAoc2VueWF3YVtpKytdIC0gJzAnKTsKICAgICAgICAgICAgaWYgKGp1bWxhaCA9PSAwKSBqdW1sYWggPSAxOwoKICAgICAgICAgICAgLy8gR2FidW5na2FuIGppa2EgdW5zdXIgc3VkYWggYWRhCiAgICAgICAgICAgIGludCBhZGEgPSAwOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50OyBqKyspIHsKICAgICAgICAgICAgICAgIGlmIChzdHJjbXAodW5zdXJbal0uc2ltYm9sLCBzaW1ib2wpID09IDApIHsKICAgICAgICAgICAgICAgICAgICB1bnN1cltqXS5qdW1sYWggKz0ganVtbGFoOwogICAgICAgICAgICAgICAgICAgIGFkYSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFhZGEpIHsKICAgICAgICAgICAgICAgIHN0cmNweSh1bnN1cltjb3VudF0uc2ltYm9sLCBzaW1ib2wpOwogICAgICAgICAgICAgICAgdW5zdXJbY291bnQrK10uanVtbGFoID0ganVtbGFoOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGkrKzsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgcHJpbnRmKCIlcyAlZFxuIiwgdW5zdXJbaV0uc2ltYm9sLCB1bnN1cltpXS5qdW1sYWgpOwoKICAgIHJldHVybiAwOwp9Cg==