2015-09-06 2 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); 
} 

и это была моя попытка преобразовать его в 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}" 
+0

Извините за не указав, что им получать эту est.rb ошибки: 9: ошибка синтаксиса, неожиданный конец входного текста, ожидая keyword_end печати "# {sum}" ^ –

+0

Я переписал вопрос. –

+0

Элемент 'if num> 0' делает это для отрицательных чисел. Просто избавитесь от него, Ruby в порядке с '2 + -1' (1). – steenslag

ответ

0

Вы были не за горами. Синтаксис if-statement требует then и end. Кроме того, 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}" 
Смежные вопросы