设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
SCL编程实例100例-121-鸡蛋掉落问题
返回列表
发新帖
[西门子]
SCL编程实例100例-121-鸡蛋掉落问题
[复制链接]
131
|
0
|
2024-4-25 16:57:16
|
显示全部楼层
|
阅读模式
1 | 题目
有K个鸡蛋喝一栋N层高的楼,存在一个临界楼层F,当鸡蛋从F层或更低的楼层掉落的话,鸡蛋都不会碎裂;反之,当鸡蛋从高于F层的楼层掉落时,鸡蛋就会碎裂,求最小需要几次试验才能够找出临界层F。
2 | 设计分析
显然,如果只有一个鸡蛋,那么有几层楼就必须做几次试验才能够确保找出临界层F;而如果只有一层楼,那么无论手上有多少鸡蛋,所需要进行的试验次数都是一次;其它情况则考察每一次操作从第i层掉落的情况,如果没有碎,那么只需要考察楼上的第n-i层即可;反之,如果碎了,那么只要考察在k-1个鸡蛋的情况下对i-1个楼层需要多少次试验才能够确保获得临界层。
得到如下递推公式:
drops[k][n]=drops[k][n-1]+drops[k-1][n-1]+1
k表示有k个蛋,n表示最多经过n次操作,drops[k][n]表示当有k个蛋时,经过最少n次操作可以确保找出多少楼以下的临界楼层。
3 | 创建功能或功能块
创建功能块FB,命名为“EggDrop”。
4 | 定义接口变量
具体接口变量定义见下图:
定义整型数变量result:输出计算结果;
定义整型数二维数组变量statDrops:存储尝试的过程值;
定义整型数常量E_N:鸡蛋数;
定义整型数常量F_N:楼层数。
5 | 程序代码
编写程序代码。如下图:
以上算法并非最优算法,感兴趣的炮友儿可以进一步优化。
6 | 代码测试
在循环OB中调用FB-“EggDrop”,调用时会自动创建背景数据块,命名为“InstEggDrop”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:
给定3个鸡蛋14层楼的情况下,最少需要4次试验。
7 | 总结
学习IF语句的使用;
学习FOR循环语句的使用;
学习FOR循环语句嵌套的使用;
学习局部常量的定义和使用方法。
- END -
工控老炮儿
分享 | 咨询 | 合作 | 共赢
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
founderchip
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』