被条件判断绕晕了……

zpwtl 2016-02-02 01:05:55
三个变量,关系为m*n/a。
要求如果变量为1时,则对应的字母不显示。
大概应该是这几种结果吧:mn/a、n/a、m/a、mn、1/a、m、n、1。
怎么设定判断条件才能得出上面的8种结果呢?
大神们帮帮忙吧,谢谢!
...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2016-02-03
  • 打赏
  • 举报
回复
Option Explicit

Sub Main()
Call f(1, 1, 1)
Call f(1, 1, 2)
Call f(1, 2, 1)
Call f(1, 2, 2)
Call f(2, 1, 1)
Call f(2, 1, 2)
Call f(2, 2, 1)
Call f(2, 2, 2)
End Sub

Function f(ByVal m As Long, ByVal n As Long, ByVal a As Long) As String

Dim s As String

If m = 1 Then
s = IIf(n = 1, "1", "√" & n)
Else
s = IIf(n = 1, m, m & "√" & n)
End If
If (m <> 1) And (n <> 1) And (a <> 1) Then
s = "(" & s & ")"
End If
s = s & IIf(a = 1, "", "/" & a)

Debug.Print "f(" & m & ", " & n & ", " & a & ") : " & s
f = s
End Function

f(1, 1, 1) : 1
f(1, 1, 2) : 1/2
f(1, 2, 1) : √2
f(1, 2, 2) : √2/2
f(2, 1, 1) : 2
f(2, 1, 2) : 2/2
f(2, 2, 1) : 2√2
f(2, 2, 2) : (2√2)/2
zpwtl 2016-02-03
  • 打赏
  • 举报
回复
非常感谢Tiger_Zhao!在你的帮助问题解决了。 原来是我没读懂代码,还有往word VB移用时弄错了写法......试着改用case做了也没出错。 恶补了一下才弄明白了一点。。。
zpwtl 2016-02-02
  • 打赏
  • 举报
回复
比如(2√27)/9=1.154700538379,我想让它显示成(2√3)/3。这个显示方式不是问题,拼接一下就行了。 就是想避免出现1√2、3√1、4/1这样的问题,需要对(m√n)/a的值进行判断,为1时不要出现前面的毛病,执行另外语句显示成正常的情况√2、3、4。 例如: if m=1 and n=1 then 显示1 if n<>1 and a=1 then 显示2 else if a<>1 then 显示3 end if else ………… 8种显示情况呢,不会写了
Tiger_Zhao 2016-02-02
  • 打赏
  • 举报
回复
不知所云!
要简化公式就是上面的代码,要计算结果就按公式计算啊。
zpwtl 2016-02-02
  • 打赏
  • 举报
回复
谢谢楼上的帮助! 试了一下,程序是不是只能输出字符串,没法得到式子的运算结果啊? 我想用在根式”m√n/a“化简的程序里,mna是从3个供输入数字的文本框中读出的,最终运算结果是一个具体的数值:整数或小数。 需要判定条件,来显示结果的样式,比如运算结果显示成分数、根数、带分数线的根数的形式。 其中m=1时不应该显示1;n=1时,√1也没有显示的必要了;a=1时,分数线和分母也不用显示了。 我用if 套晕了,还是有不合理的地方
Tiger_Zhao 2016-02-02
  • 打赏
  • 举报
回复
Option Explicit

Sub Main()
Call f(1, 1, 1)
Call f(1, 1, 2)
Call f(1, 2, 1)
Call f(1, 2, 2)
Call f(2, 1, 1)
Call f(2, 1, 2)
Call f(2, 2, 1)
Call f(2, 2, 2)
End Sub

Function f(ByVal m As Long, ByVal n As Long, ByVal a As Long) As String

Dim s As String

If m = 1 Then
s = IIf(n = 1, "1", "n")
Else
s = IIf(n = 1, "m", "mn")
End If
s = s & IIf(a = 1, "", "/a")

Debug.Print "f(" & m & ", " & n & ", " & a & ") : " & s
f = s
End Function

f(1, 1, 1) : 1
f(1, 1, 2) : 1/a
f(1, 2, 1) : n
f(1, 2, 2) : n/a
f(2, 1, 1) : m
f(2, 1, 2) : m/a
f(2, 2, 1) : mn
f(2, 2, 2) : mn/a

2,463

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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