C言語で以下のようなプログラムを作りたいのですが,文字列の処理について全く方針が立たないので,アドバイスをお願いします.
物質を化学式で代入し,分子量を返すプログラム.
分子量
H:1
C:12
O:16
(例) 二酸化炭素
(入力) CO2
(出力) C1 , O2, 44 g/mol
// 12+16*2=44
(例) 一酸化炭素
(入力) CO
(出力) C1, O1, 28 g/mol
// 12+16=28
(例) アセトン
(入力) (CH3)2CO
(出力) C3, H6, O1, 58 g/mol
// 123+16+16=58
カッコの有無を処理するところまでコードを書いて,次に何の元素が何個含まれているかを処理しようとしたところで詰まっています.
地道にstrchr関数やstrstr関数で全ての原子について書けば何とかなりそうなのですが,他に良い方針はないでしょうか?
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5void Get_Sample_Name(char samplename[64]) { 6 7 puts("Enter the chemical formula of the sample."); 8 printf("Chemical formula : "); 9 scanf("%s", samplename); 10 11 return; 12} 13 14void Judge_Brackets(char samplename[64]) { 15 16 char *bra, *ket; 17 18 bra = strchr(samplename, '('); 19 ket = strchr(samplename, ')'); 20 21 if (bra == NULL && ket == NULL) { 22// puts("no bracket"); 23 } else if (bra == NULL && ket != NULL) { 24 puts("no exist ("); 25 exit(0); 26 } else if (bra != NULL && ket == NULL) { 27 puts("no exist )"); 28 exit(0); 29 } else { 30// puts("brackets"); 31 } 32 33 return; 34} 35 36 37int main(int argc, const char * argv[]) { 38 39 char samplename[64]; 40 41 Get_Sample_Name(samplename); 42 Judge_Brackets(samplename); 43 44 return 0; 45}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/22 05:29
2019/02/22 08:07