查找数组中的中间数字;我明白该怎么做,但无法使其发挥作用。 :/(珊瑚色)

问题描述 投票:0回答:3

虽然我的代码有效,但这不是问题想要解决的方式,我想知道正确的方法。

问题是:

给定一个排序的整数列表,输出中间的整数。假设 整数的个数总是奇数。

例如:如果输入为 2 3 4 8 11 -1(负数表示结束),则 输出是:

4 任何测试用例的最大输入数量不应超过 9 积极的价值观。如果超过,则输出“Too much input”。

提示:使用大小为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 中设置我不知道的数组吗?

arrays logic
3个回答
0
投票

程序失败,因为他们要求您将数组设置为 9。 然而,他们偷偷地输入了应该停止程序的负数作为第 10 个输入,这将超出 9 的数组范围。

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

只需更改这一行:

integer array(20) number
integer array(11) number


0
投票

万一其他人遇到这个问题,我自己也因为这个特定问题过于复杂而受到摆布。 这是通过了所有 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

0
投票

这在其他语言中更容易完成。但这个解决方案应该有效。

integer int
integer array(12) userNum
integer array(?) myArray
integer i
integer middleNum
integer counter
integer x
integer userInput

for i = 0; i < userNum.size; i = i + 1
   userNum[i] = -1

userNum[0] = Get next input

for i = 0;userNum[i] >= 0; i = i + 1
   userInput = Get next input
   userNum[i + 1] = userInput
   counter = counter + 1

if counter > 9
   Put "Too many inputs" to output
else
   myArray.size = counter
   for i = 0; i < myArray.size; i = i + 1
      myArray[i] = userNum[i]
   
int = myArray.size % 2

if int == 1
   middleNum = myArray.size / 2
   Put myArray[middleNum] to output
© www.soinside.com 2019 - 2024. All rights reserved.