高手进来,求一个中级水平关于字符串的function的写法

Sqler 2004-01-05 08:56:02
化学方程式和离子反应方程式的配平
比如输入"MnO2+HCl=MnCl2+Cl2+H2O",根据质量守衡,需要输出成"MnO2+4HCl=MnCl2+Cl2+2H2O","Fe2+ + Cl2 =Fe3+ + Cl-"需要输出为"2Fe2+ + Cl2 =2Fe3+ + 2Cl-"
谢谢
...全文
132 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sqler 2004-01-07
  • 打赏
  • 举报
回复
我偏偏就不信邪
SoHo_Andy 2004-01-07
  • 打赏
  • 举报
回复
呵呵,是你的问题要求很高,不是几行代码就搞定了
上面已经有了一些思路,但是要实现比较好的话,还需要太多测试和修改了
Sqler 2004-01-07
  • 打赏
  • 举报
回复
大家都没招了吗?
Sqler 2004-01-06
  • 打赏
  • 举报
回复
up
kmzs 2004-01-05
  • 打赏
  • 举报
回复
配平问题不简单呢
龙华 2004-01-05
  • 打赏
  • 举报
回复
len("")/2。
龙华 2004-01-05
  • 打赏
  • 举报
回复
将元素种类赋值进字符串数组,所有的元素名称补足二位,如:Fe不变,H变为H#
,这样,二价化合价可以用FeFe表示,len("FeFe")就是它的化合价了。
当左边n*len("FeFe")+...=右边的时候,输出就可以了。
输出时将所有的字符长度大于二的取左二位,然后替换#为""。
OK,问题解决了吗?
a11s 2004-01-05
  • 打赏
  • 举报
回复
Fe 还有2价 3价的
何况同时具有两种价态的分子也有
(复杂程度空前加大)
Sqler 2004-01-05
  • 打赏
  • 举报
回复
配平的好多技巧好象根本用不上,只要质量守衡、电核守衡即可,没法分析电子得失了
帮我!谢谢
yzx99 2004-01-05
  • 打赏
  • 举报
回复
更关键的是化学方程式配平的基本技巧都忘了
对于简单的配平可以试用这种步骤
1.定义一个元素符号的基础表,以正确分解将来的化学方程式
2.定义动态数组,最好是二维并且元素一个,数量一个,左边一组,右边一组,第零项不用,做为配平数
3.包括对输入的化学方程式逐个字符分解
如果是加号新起一个\如果是数字放入数量中\如果元素不符合基础表中则取前面(N和Na的区分)放入元素中
4.开始配平
取第一个元素看左右的数量,再取最小公倍数填在数量中,再取下一个
……
纸上谈兵,对你没什么帮助,不过这么重要的算法网上应该有详细的介绍吧

SoHo_Andy 2004-01-05
  • 打赏
  • 举报
回复
示例,没时间都完成,给个简单提示吧
Private Type MyUnit
name As String
num As Integer
End Type
Dim unit左 As MyUnit
Dim unit右 As MyUnit

Dim 元素列表(3) As String '列出所有元素,这是为了避免不必要的文本分析过程
Private Sub Command1_Click()
Dim str1() As String
Dim str左() As String
Dim str右() As String

str1 = Split(Text1.Text, "=")
str左 = Split(str1(0), "+")
str右 = Split(str1(1), "+")

'解析左右表达式,把元素和质量数填入unit左右结构中
'配平,使用递归算法,多次计算和配平,知道unit左右两个结构中元素num都相同

End Sub

Private Sub Form_Load()
Text1.Text = "MnO2+HCl=MnCl2+Cl2+H2O"
元素列表(0) = "Mn"
元素列表(1) = "O"
元素列表(2) = "H"
元素列表(3) = "Cl"
End Sub
zhengoodman 2004-01-05
  • 打赏
  • 举报
回复
mark,可以研究一下
northwolves 2004-01-05
  • 打赏
  • 举报
回复
有一定难度,boybluesky(boybluesky) 的思路有创意
Sqler 2004-01-05
  • 打赏
  • 举报
回复
再推一把,星星们怎么不支招呀?
yzx99 2004-01-05
  • 打赏
  • 举报
回复

http://biosoft.im.ac.cn/chem.html
下载相关软件
两个高中生写的带PASCAL源码
江苏省苏州中学高二(2)班
Dick·邵 或 DARYL·吴 收
邮政编码:215000

D&D Studio
97-10-10
captainivy 2004-01-05
  • 打赏
  • 举报
回复
那确实
挺复杂的

学习一下

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧