Pascal 题目:输出式量(化学内容)

来源:百度知道 编辑:UC知道 时间:2024/07/02 18:20:27
输入一个化学式,输出分子量或原子量
样例输入:
[1]
输入: CaCO3
输出: 100
[2]
输入: O
输出: 16
[3]
输入:H2O
输出:18
[4]
输入:2H2O
输出:36
要求识别的化学元素符号如下:
K Na Ba Ca Mg Al Fe Al H O N P S Cu Ag C Zn Cl

const
ts:array [1..17] of string[2]=('Cl','Na','Ba','Ca','Mg',
'Fe','Al','Cu','Ag','Zn',
'P','S','H','O','C',
'N','K');
w:array [1..17] of longint=(35,23,137,40,24,
56,27,64,108,65,
31,32,1,16,12,
14,39);
var s:string;
ans,al,dlt,c,i,k,t:longint;

function isnum(c:char):boolean;
begin
isnum:=(c<='9') and (c>='0');
end;

function rnum:longint;
begin
rnum:=0;
while (k<=length(s)) and isnum(s[k]) do begin
rnum:=rnum*10+ord(s[k])-48;
inc(k);
end;
end;

function rstr:longint;
var i:longint;
begin
for i:=1 to 17 do if (k+length(ts[i])-1<=length(s)) and (copy(s,k,length(ts[i]))=ts[i]) then begin
inc(k,length(ts[i]));
exit(i);
end;
end;