2017-02-15 2 views
2

나는 꽤 프로그래밍에 익숙하다.산술 계열을보다 효율적으로 만들기 위해 중첩 루프를 제거하는 방법은 무엇입니까?

이것은 지금 가지고있는 코드입니다. 프로그램의 기능을 변경하지 않고 중간에 두 개의 루프를 결합하는 방법을 알고 싶습니다.

entry = " " 

while entry != "q" 
    print "enter a number: " 
    num = gets.to_i 

    for x in 1..num 
     sum = 0 
    end 

    for y in 1..x 
     sum = sum + y 
     puts sum 
    end 

    print "press any key to continue (q to quit): " 
    entry = gets.chomp 
end 

모든 도움을 주시면 감사하겠습니다.

감사합니다.

편집 : 나는이 프로그램의 기능을 명확히해야한다 생각

; 사용자 형식 번호와 그 때까지 각각의 산술 일련의 값을 계산하고, 사용자에 넣어 수를 포함한 I의 결과는 다음과 같이 표시한다 (3)에 입력 할 경우에 따라서 그것을

:.

1

3

6

혼란을 드려 죄송합니다! 당신이 계산 원하는 입력 번호 1에서 숫자의 합을두고 있다고 가정

+1

및 : 편집 질문 솔루션

while entry != "q" print "enter a number: " num = gets.to_i puts (1..num).sum print "press any key to continue (q to quit): " entry = gets.chomp end 

이 될 수있다 스택 오버플로에 오신 것을 환영합니다. 나중에 적절한 들여 쓰기를 사용하십시오. 코드가 올바르게 형식화되어 있으면 더 많은 답변과 더 빨리 얻을 수 있습니다. 또한 프로그램의 목적을 설명하고 다른 사용자가 프로그램을 실행하거나 줄을 서서 읽으 려 시도하지 마십시오 (잠재적으로 잘못 될 수 있음). – Amadan

+0

나는 그것을 명심 할 것이다! 감사합니다. – Vroryn

+1

Ruby를 작성할 때 고려해야 할 한가지는 'for'를 사용하지 않는 것입니다. 다른 언어의 백본이라면 이상하게 들릴 수도 있습니다. Ruby에서'each'는 반복자 반복자이며'each_with_index' 또는'each_with_object'와 같이 매우 유연한 많은 변형이 있습니다. '(1..num) .each' 또는'(1..x) .each do | x |'는 이것이 정상적으로 표현되는 방법입니다. [Enumerable] (http://ruby-doc.org/core-2.4.0/Enumerable.html) 라이브러리는 Ruby의 중간에 빛나는 보석입니다. 따라서 학습한다면, 장난감을 살펴보십시오. 도구가 거기에 있습니다. – tadman

답변

2

, 나는 다음과 같은 제안 : 안녕하세요

while entry != "q" 
    print "enter a number: " 
    num = gets.to_i 
    (1..num).inject(0) do |res, e| 
    res += e 
    p res 
    end 

    print "press any key to continue (q to quit): " 
    entry = gets.chomp 
end 
+0

정말 고마워요! 정확히 내가 무엇을 찾고 있었는지! – Vroryn

+0

아, ['sum'] (http://blog.bigbinary.com/2016/11/02/ruby-2-4-introduces-enumerable-sum.html)이 2.4에서 Ruby에서 Rails로 만들었습니다. – tadman

+0

@Vroryn, 제발, 내 문제를 해결하면 내 대답을 받아 들일 것을 잊지 마세요. – Ilya

관련 문제