『7x24小时有问必答』
1  | 题目

酋长的女儿艾丽要出嫁了,按以往的风俗习惯,要搭个高台,台下是众多的求婚者,艾丽在台上扔束花,台下的人谁先抢到,艾丽就得嫁给谁。
但她担心落不到心爱的人雷蒙的身上,艾丽私下约雷蒙商量如何是好,聪明的雷蒙想出了一个好主意……
艾丽便和父亲说:“我不愿意搭台撒花,那么多人,挤在一起乱哄哄的,毫无秩序,感染新冠病毒怎么办。”
父亲说,“不这样也可以,但结婚时要当场在人群中决定嫁给谁,不许指名,方法你自己定。”艾丽高兴的告诉主持人如何行事。
求婚日来临,人群拥挤,主持人叫求婚者戴好口罩排成一队,雷蒙在队外数了数队列共有100人,于是自己找了个合适的位置也站在队列中。
主持人要大家从前往后1、2、1、2……报数,报单数的退出场外,余下的人位置不变,再重新从前往后1、2、1、2……报数,报单数的退场。
如此下去最后只剩一人,艾丽便嫁给谁。大家惊奇的发现最后剩下的竟是雷蒙。
编写程序回答雷蒙刚开始站在队列中的第几个位置

2 | 设计分析

这是一个重新排队的问题,先把不合格的剔除,剩余的重新排队。

3  | 创建功能或功能块

创建功能块FB,命名为“SmartCouple”。

4 | 定义接口变量

具体接口变量定义见下图:
定义数据类型为整型数的一维数组#statPositions,一共101个元素代表求婚者的队列。

5 | 程序代码

编写程序代码。如下图:

每次将剩下的人重新排队将最初队列编号存入队列数组,最后队列数组中第一个元素就是雷蒙。

6 | 代码测试

在循环OB中调用FB-“SmartCouple”,调用时会自动创建背景数据块,命名为“InstSmartCouple”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:

刚开始雷蒙排在了第64位,我们从队列数组也可以看到最后数组的第一个元素为64。只截取了部分数组元素,从监视结果可以大概看出推演过程。

7 | 总结

学习使用FOR循环语句;
学习使用WHILE循环语句;
学习使用循环嵌套;
学习使用IF条件语句;
学习组合赋值的使用。

- END -
工控老炮儿

分享 | 咨询 | 合作 | 共赢

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码