有一道题,大家想想最简单的算法

happyhong 2004-06-21 09:27:55
有一道题,要大家想想最简单的算法

C=A*B

要求
A的范围是6500.00~7600.00
B,是根据用户输入C而得到的,小数位为3位
C,又是A*B的乘积.

也就是说,A和B要在运算中得到,C是输入的

怎么做呀?大家出出主意
...全文
457 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyhong 2004-07-03
  • 打赏
  • 举报
回复
多少钱?
CsdnRob 2004-07-02
  • 打赏
  • 举报
回复
呵呵,大虾,你要个路由器吗? 什么牌子的都有,思科,华为,联想,港湾,…… 或者,可以用三层交换机也可以哦,呵呵,IPX?可以啊,你设置一下就可以了啦!
happyhong 2004-06-23
  • 打赏
  • 举报
回复
C也可以输入小数的,负数也没问题
happyhong 2004-06-23
  • 打赏
  • 举报
回复
A、B的范围是可带小数又可不带的。
我把西门的程序移植过VB中了,反正算法还是用回他的,这是正确的一种算法

Dim a As Double
Dim b As Double
Dim c As Double
c = Text1.Text
a = 6500#
b = 0#
Do While a <= 7600.99

b = Round((c / a), 3)

If b = (c / a) Then
Exit Do
End If

a = Round(a + 0.01, 2)
Loop

If a > 7600.99 Then
MsgBox "没找到!"

Else
Text2.Text = a
Text3.Text = b
End If
flyingscv 2004-06-22
  • 打赏
  • 举报
回复
我给得不行吗,倒了
vbfunner 2004-06-22
  • 打赏
  • 举报
回复
compile it and see if it's the littellest
flayfeiyu 2004-06-22
  • 打赏
  • 举报
回复
你说的不够清楚啊!
happyhong 2004-06-22
  • 打赏
  • 举报
回复
TO:中海,你的结果还是不对,我要求出的A和B都是精确的值,A*B一定等于C,不是四舍五入的.你的算法就四舍五入了,还是要用循环的,或者还要改改
cghdenglu 2004-06-22
  • 打赏
  • 举报
回复
这个数的组合可能是有的,但不是没个C都有
80808800 2004-06-22
  • 打赏
  • 举报
回复
这个数的组合可能是有的,但不是没个C都有
80808800 2004-06-22
  • 打赏
  • 举报
回复
C要有小数,A和B只有三位小数,我问你,要是假设C=XXX.XX1(也就是最后一位小数为1),你怎么办
victorycyz 2004-06-22
  • 打赏
  • 举报
回复

A、B都要求带小数,还有C也允许输入小数,那么计算结果肯定有浮点运算误差。要求精确值似不太合理吧。
wxyq 2004-06-22
  • 打赏
  • 举报
回复
Sub main()

Dim a As Double
Dim b As Double
Dim c As Double
Dim i As Double
c = 6500 * 0.25
Open "t.txt" For Output As #1

For a = 6500 To 7600 Step 0.001
b = c / a
If Round(b, 3) * a = c Then
Print #1, , a & " * " & b & " = " & c
End If
Next
Close #1
End Sub
happyhong 2004-06-21
  • 打赏
  • 举报
回复
感谢西门兄的大力帮助,他说不要VB分了
happyhong 2004-06-21
  • 打赏
  • 举报
回复
回复人: hushaoshu2(西门吹雪)
他用DELPHI解决了,真是佩服他,同时我也在惭愧自己
VbKing 2004-06-21
  • 打赏
  • 举报
回复
dim A as double,B as double,C as double
c=text1.text
for a=6500.00 to 7600.00 step 0.01
b=round(c,2)/round(a,2)
if cdbl(b)=cdbl(int(b)) then
debug.print "A=" & A & "|B=" & B & "|C=" & C
end if
next
  • 打赏
  • 举报
回复
uses math;
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:real;
begin
c:=strtofloat(edit1.Text);
a:=6500.00;
b:=0.00;
while a<=7600.99 do
begin
b:=roundto((c/a),-3);
if b=(c/a) then
break;
a:=roundto(a+0.01,-2);
end;
if a>7600.99 then
showmessage('没找到!')
else
begin
label1.Caption:=floattostr(a);
label2.Caption:=floattostr(b);
end;
end;
northwolves 2004-06-21
  • 打赏
  • 举报
回复
先举个完整的例子
BlueBeer 2004-06-21
  • 打赏
  • 举报
回复
C要输入?A不确定?求B?

晕~
zyguyue 2004-06-21
  • 打赏
  • 举报
回复
晕!
加载更多回复(20)

7,762

社区成员

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

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