[西门子] SCL编程实例100例-025-勾股数

[复制链接]
查看199 | 回复0 | 2024-12-11 08:13:25 | 显示全部楼层 |阅读模式
>

1 | 题目



若三个正整数a、b、c,其中a<=b<=c,满足a2+b2=c2,称这三个数为“勾股数”,例如:3、4、5是勾股数。编写程序求100以内的所有勾股数。



2 | 设计分析



在所求范围内采用穷举法求解,利用3个循环语句分别控制变最a、b、c的取值范围,第1层控制变量a,取值范围是1-100。在a值确定的情况下再确定b值,即第2层控制变量b,b的取值范围是a-100(可以优化)。a、b的值已确定,再确定c,即第3层控制变量c,c的取值范围是b-100(可优化),利用穷举法在b-100范围内一个一个的去比较,看当前c值是否满足条件a2 + b2 = c2,若满足,则输出当前a、b、c的值,否则继续寻找。



3 | 创建功能或功能块



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




4 | 定义接口变量



具体接口变量定义见下图:

预定义含有10组元素的二维数组来保存结果。定义临时变量#tempI、#tempJ、#tempK分别代替以上分析中的a、b、c。



5 | 程序代码



编写程序代码。如下图:


由于在100以内的勾股数较多,程序中只保存了10组结果,注意增加条件,否则程序将报错。



6 | 代码测试



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

计算得到100以内的勾股数有52组,此处只选取了10组进行监视。



7 | 总结



学习使用FOR循环语句;

学习使用FOR循环语句的三重嵌套;

学习二维数组的使用;

学习EXIT语句的作用

-

本帖子中包含更多资源

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

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

本版积分规则