【问题标题】:Finding the middle number in an array; I understand how to do it but can't make it work. :/ (Coral)在数组中查找中间数;我知道该怎么做,但不能让它工作。 :/(珊瑚)
【发布时间】: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

标签: arrays logic


【解决方案1】:

程序失败,因为它们要求您需要将数组设置为 9。 然而,他们偷偷输入了应该停止程序的负数作为第 10 个输入,这将在 9 的数组范围之外起作用。

所以最好的办法是将数组设置为下一个最大奇数:11

只需更改此行: integer array(20) numberinteger array(11) number

【讨论】:

    【解决方案2】:

    万一其他人遇到这种情况,我自己也很容易对这个特定的人过于复杂。 这是通过所有 10 项测试的 Coral 程序

    提交通过了所有测试 总分:10 / 10

    integer userInts
    integer i
    integer mid
    integer array(9) n
    
    userInts = Get next input
    
    while (userInts >=0) and (i < n.size)
       n[i] = userInts
       userInts = Get next input     
       i = i + 1
         
    if userInts >=0
       Put "Too many inputs" to output
    else
       mid = i / 2
       Put n[mid] to output
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多