【发布时间】:2022-01-06 21:54:31
【问题描述】:
这是一个代码,用于查找等差数列的缺失序列并找到共同的差异,并检查它是增加还是减少序列。接受用户输入以进行进一步操作
例如:输入数组元素
2 4 6 10 12 14
缺少的数字是 8 而不是
输入数组元素
2
4
6
10
12
14
缺少的数字是 8
puts "enter arithmetic sequence"
o = Array.new
x = gets.chomp
item = x.split(" ")
o.push(item)
puts "#{o}"
len = o.length
sum = (len + 1) * (o[0] + o[len - 1]) / 2
summ = 0
o.each { |a| summ+=a }
res = sum - summ
if(o[1]>o[0])
puts "its an increasing sequence"
else
puts "its a decreasing sequence"
end
common_difference = o[1] - o[0]
puts "Common difference is #{common_difference}"
puts "missing number is #{res}"
sum common difference 之类的操作是有效的,但要求是我们需要在一行中获取用户输入,而不是在多行中,将其拆分并存储在一个数组中。 对于求和,我使用了实际总和 - 目标总和方法。
Main issue is that it rise an error
`*': Array can't be coerced into Integer
如何使用to_i方法或Integer方法将字符串格式的数组元素转换为int
Expected Output
i/p 2 4 6 8 12 14
o/p
missing number 10
【问题讨论】:
-
"如何使用 to_i 方法或 Integer 方法将字符串格式的数组元素转换为 int" - 如果这是您的实际问题,您应该省略算术序列并专注于用户输入/转换。
-
item = x.split(" ")-> 因此item是一个字符串数组。o.push(item)-> 因此,o是一个数组,其中每个元素都是一个字符串数组。o[0] + o[len - 1]-> 因此,+是数组的串联,产生一个新数组。将*或/应用于数组实际上没有任何意义。
标签: ruby integer arithmetic-expressions