| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1035 人关注过本帖
标题:求助“钞票总数最少”程序运行错误!在VF6.0环境中!
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用kiff在2014-12-10 15:24:54的发言:

x=int(thisform.text1.value) &&thisform.text1.value 你本设它为数值型了,不需要再用 val()转换
*InLen=len(alltrim(padl(x,20," "))) &&alltrim()和 padl()不是有矛盾吗
InLen=len(padl(x,20," ")) &&注意" "中是有一个空格的
y1=int(x/100)
x=x-100*y1
y2=int(x/50)
x=x-50*y2
y3=int(x/20)
x=x-20*y3
y4=int(x/10)
x=x-10*y4
y5=int(x/5)
x=x-5*y5
y6=int(x/2)
x=x-2*y6
y7=x
a="==========="+chr(13)
a=a + padl(y1,InLen," ")+"张100元票"+padl(y2,InLen," ")+"张50元票"+chr(13)
a=a + padl(y3,InLen," ")+"张20元票"+padl(y4,InLen," ")+"张10元票"+chr(13)
a=a + padl(y5,InLen," ")+"张5元票"+padl(y6,InLen," ")+"张2元票"+chr(13)
a=a + padl(y7,InLen," ")+"张1元票"+chr(13)
a=a+"========="+chr(13)
a=a+"共计"+TRANSFORM(thisform.text1.value)+"元"
messagebox(a,0,"取款")
thisform.text1.setfocus

InLen=len(alltrim(padl(x,20," ")))
加AllTrim()的用意可知道?
AllTrim()与Padl()有何矛盾
这个地方是计算输入数据的实际长度,如果不用AllTrim(),输入任何数据,其长度必将是20位。

坚守VFP最后的阵地
2014-12-10 18:51
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
我可没看他代码什么意思,也没看他的代码出自何处,我只是对这 alltrim(padl(x,20," "))打问号,也就是前补空格。然后再去空可格,经你这一说我知道你真正意图是想数值型转字符型,并求实际长度,看的角度不同,自然就有不同观点。
2014-12-10 22:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 22楼 kiff
论坛就是探讨问题的地方,愿百家争鸣,百家齐放,相互交流,共同提高。

坚守VFP最后的阵地
2014-12-10 23:12
blackcatgl
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-5-20
收藏
得分:0 
今天刚好备课到这里,自行研究解决了。原因是输出的变量迭代出现问题了。
正确代码如下,供后来者参考。
x=val(thisform.text1.value)
y1=int(x/100)                          &&计算100元票张数
x=x-100*y1                             &&求余额
y2=int(x/50)                           &&计算50元票张数
x=x-50*y2                              &&求余额
y3=int(x/20)                           &&计算20元票张数
x=x-20*y3                              &&求余额
y4=int(x/10)                          &&计算10元票张数
x=x-10*y4                              &&求余额
y5=int(x/5)                           &&计算5元票张数
x=x-5*y5                               &&求余额
y6=int(x/2)                            &&计算2元票张数
x=x-2*y6                               &&求余额
y7=x                                   &&计算1元票张数

a="========================"+chr(13)+;
str(y1,3)+"张 百元票,"+str(y2,3)+"张 50元票"+chr(13)+;
str(y3,3)+"张 20元票,"+str(y4,3)+"张 10元票"+chr(13)+;
str(y5,3)+"张  5元票,"+str(y6,3)+"张  2元票"+chr(13)+;
str(y7,3)+"张  1元票"+chr(13)+;
"========================"+chr(13)+;
"共计 "+thisform.text1.value+"元"


messagebox(a,0,"最佳付款方案")                &&利用对话框输出结果
thisform.text1.setfocus                       &&设置焦点
2019-05-20 17:42
blackcatgl
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-5-20
收藏
得分:0 
顺便说一句,楼主是认真手打了教材提供的程序,其实是书印错了代码了。
我这看到的教材版本是Visual FoxPro6.0程序设计教程(第三版)丁爱萍主编
P70例4-6
2019-05-20 17:46
快速回复:求助“钞票总数最少”程序运行错误!在VF6.0环境中!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020068 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved