2015-09-06 80 views
-3

C语言中的这些代码完美地工作,我将解释它的作用: 给定一个正整数“n”和一个“n”个整数序列,总和将确定一个正整数。输入 实例: 4 9 -1 4 -2 预期输出:13 /输入:3 3 0 -2输出:3/无法将C程序转换为Ruby

#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); 
} 

,这是我的尝试将其转换为红宝石

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}" 
+0

对不起,不指定,即时得到这个错误est.rb:9:语法错误,意外结束输入,期待keyword_end 打印“#{sum}” ^ –

+0

我重写了这个问题。 –

+0

'if num> 0'部分表明它不适用于负数。只要摆脱它,Ruby就可以用'2 + -1'(是1)。 – steenslag

回答

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}" 
相关问题