回 帖 发 新 帖 刷新版面

主题:十万火急,请帮下我好吗

[em8]好人啊,能帮我编个计算程序吗?非常感谢!!要程序计算出随便输入一个由5个数字组成的式子的结果(结果只需要显示1到50之间的整数)。这个5个数字是人为输入电脑的,都是1到9之间的个位数,而连接这5个数字之间的加减乘除运算符号是随即出现的,未知的,比如这次可以输入:6()9()8()7()5=?计算出结果,下次可以输入:2()3()5()4()1=?进行计算。  真心希望您的帮忙,等待您的好消息!!
    联系电话:13694900905    QQ:154430622    邮箱:cbqcbq2004@126.com

回复列表 (共4个回复)

沙发

可以去具体编程论坛区问问,这里是软件创意

板凳

??????????

3 楼

要考虑运算符优先级的问题哦.还有个问题,是先输入数字还是电脑先给定符号????
我的想法:
6 () 7 () 8 () 9 () 2 =?
1 2  3  4 5  6 7  8 9 (位)
一个数组结构来存储以每一位的内容:
struct Demo
{
  bool IsNummber;//决定这一个是不是数字
  int Number;//如果是数字则存储数值
  char Operator;//如果不是则存储相应的操作符
  int OperatorPrecedence;//决定操作符优先级.可以设为1最高,依次降低.
}
然后根据操作符优先级操作:
如第6位具体有最高优先级,则首先对第5位和第7位进行第六位给定的操作,然后这三位就合并为一位了,再依优先级进行操作.
按楼主给出的算式是不会出现括号的情况,可以只考虑=-*/就可以了.

4 楼

'用VB编的 主要添加控件Command1 ,text1, text2 再引用个Microsoft Script Control 1.0

Private Sub Command1_Click()
Dim X As String
Dim n(4) As Integer
Dim s(3) As String

For i = 0 To 4
n(i) = Val(InputBox("请输入第" & i + 1 & "个正整数", "数据输入"))
k = Int(Rnd * 4)
Select Case k
 Case 0
s(i) = "+"
 Case 1
s(i) = "-"
 Case 2
s(i) = "*"
 Case 3
s(i) = "/"
End Select
Next i

X = n(0) & s(0) & n(1) & s(1) & n(2) & s(2) & n(3) & s(3) & n(4)
Text1.Text = X
Text2.Text = RESULT(X)
End Sub

Function RESULT(ByVal X As String) As Double
Dim OBJ As Object
Set OBJ = CreateObject("MSScriptControl.ScriptControl")
  OBJ.Language = "vbscript"
RESULT = OBJ.Eval(X)
Set OBJ = Nothing
End Function

我来回复

您尚未登录,请登录后再回复。点此登录或注册