无法将C程序转换为Ruby

时间:2015-09-06 20:11:40

标签: c ruby

C语言中的这段代码完美无缺,我将解释它的作用: 给定正整数“n”和“n”整数序列,总和将确定正整数序列。 输入示例: 4 9 -1 4 -2 预期输出:13 /输入:3 3 0 -2输出:3 /

#include <stdio.h>
int main(){
    int cont=0,n,num,sum;
    scanf("%i",&n);
    while(n>cont){
        cont++;
        scanf("%i",&num);
        if(num>0){
        sum=num+sum;
        }
    }
    printf("%i",sum);
}

这是我尝试将其转换为Ruby

cont=0
n=gets.to_i
while n>cont do
  cont=cont+1
  num=gets.to_i
      if num>0
    sum=num+sum
  end

  puts"#{sum}"

这就是我得到的:

 ruby test.rb                                                   
test.rb:10: syntax error, unexpected end-of-input, expecting keyword_end              
  puts"#{sum}"                                                                        
              ^

。有人可以帮忙吗?

谢谢,所以这是正确的代码

cont=0
sum=0 
n=gets.to_i
while n>cont do
  cont=cont+1
  num=gets.to_i
  sum=num+sum if num>0
end

puts"#{sum}"

1 个答案:

答案 0 :(得分:0)

你离我不远。 if语句的语法需要thenend。此外,sum在开始时需要为零。

cont=0
sum=0  # sum needs an initial value
n=gets.to_i
while n>cont do
  cont=cont+1
  num=gets.to_i
  sum=num+sum
  # num = num+sum if num >0
  # #or
  # if num >0 then
  #   sum=num+sum 
  # end
  # #But both "if's" serve no purpose   
end

puts"#{sum}"

另一种写作方式是:

sum = 0
gets.to_i.times{sum += gets.to_i} # no bookkeeping with cont
puts sum                          # more simple then puts"#{sum}"