加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684
公司新闻
SCL编程实例100例-119-盛Zui多水的容器
发布时间: 2024-11-25 15:49 更新时间: 2024-11-25 15:49

前言

通过该实例学习可变长一维数组的定义和使用方法和WHILE循环语句的使用方法,从而进一步了解面向对象和标准化编程的思想。


1 | 题目



给定一个长度为n的整数数组height,分布在x-y坐标系中,有n条垂直于x轴的垂线,第i条线的两个端点是(i, 0)和(i, height[i])。用西门子TIA博途SCL语言编写程序找出其中的两条线,使得它们与x轴共同构成的容器可以容纳Zui多的水。求容器可以储存的Zui大水量。

说明:不能倾斜容器。

示例:

输入:[1,8,6,2,5,4,8,3,7]。

输出:49。

如下图:


解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。

在此情况下,容器能够容纳水(表示为蓝色部分)的Zui大值为 49。



2 | 设计分析



题目中的Zui大容积计算可以简单看作是求封闭图形的Zui大面积。遵从木桶原理,从Zui左侧开始,Zui左侧垂线和Zui右侧垂线比较高度,选择Zui矮的一条垂线进行水平封闭,求出面积并保存面积值。然后把以上选择的Zui矮垂线和它相邻的垂线进行比较(Zui左侧的和其紧邻右侧相比较,Zui右侧的和其紧邻左侧相比较),继续找出Zui矮垂线进行水平封闭,求出新的面积并和前次求得的面积进行比较,保留Zui大面积值。利用循环语句循环比较,直到不能得到封闭图形时结束循环,即得到计算结果。



3 | 创建功能或功能块



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




4 | 定义接口变量



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

定义整型输入输出变量result作为计算结果输出;

定义整型可变长一维数组变量heights作为输入的不同长度垂线;

定义整型静态变量statLower作为每次比较的较短垂线;

定义长整型静态变量statLeftIndex和statRightIndex作为长短比较时的索引变量;

定义长整型临时变量tempHeightsL和tempHeightsU作为输入数组的上下脚标。


联系方式

  • 电  话:13922889745
  • 经理:向小姐
  • 手  机:18475208684
  • 微  信:18475208684