【发布时间】:2020-10-09 16:09:08
【问题描述】:
虽然我的代码有效,但这不是问题想要解决的方式,我想知道正确的方式。
问题是:
给定一个排序的整数列表,输出中间的整数。假设 整数的个数总是奇数。
例如:如果输入为 2 3 4 8 11 -1(负数表示结束),则 输出是:
4 任何测试用例的最大输入数不得超过 9 积极的价值观。如果超过,输出“Too many inputs”。
提示:使用大小为 9 的数组。首先,将数据读入数组。然后, 根据物品的数量,找到中间的物品。
我的代码:
integer userInput
integer i
integer mid
integer array(20) number
userInput = 1
for i = 0; userInput >= 0; i = i + 1
if number[i] > -1
userInput = Get next input
number[i] = userInput
i = i - 1
mid = i / 2
if i > 9
Put "Too many inputs" to output
elseif i % 2 == 0
Put number[mid - 1] to output
else
Put number[mid] to output
问题表明数组的大小必须配置为 9,但如果使用 9 或 10,程序会失败,我不知道为什么,所以出于沮丧,我将其设置为 20。我已经用其他多种方式尝试过这个问题,比如使用 while 循环
while number[i] > -1
但由于某种原因导致它永远不会结束,即使每组输入确实有一个-1。还有其他方法我已经忘记了,但导致输出 -1000000000 而不是任何实际数字。我很茫然,但至少我在某种程度上让它发挥了作用。
我向老师寻求帮助,他只说:“您的困难与您设置和使用阵列的“逻辑”有关。尝试从头开始”
我已经从头开始了大约十几次,但我没有看到他在说什么。有什么方法可以在我不知道的 Coral 中设置一个数组吗?
【问题讨论】:
-
你的代码工作得很好,你说循环永远不会结束,那是因为你忘记在最后给出 -1 并且要清楚你的代码也可以很好地处理 10 个数组元素确保提供正确的输入:我的输入是 55 79 89 87 45 47 44 75 36 -1,输出是 45,这是正确的 我不明白为什么在执行时会得到错误的输出或错误。检查此链接:corallanguage.org/simulator