2011년 7월 2일 토요일

입력된 두수사이의 수들의 합을 구하는 거



(defun c:asdf()
  (setq n1(getint"\n첫번째 정수를 입력해주세요"))
  (setq n2(getint"\n두번째 정수를 입력해주세요"))
  (setq  sum 0)

  (if(< n1 n2)
   
    (setq start n1 end n2)
    (setq start n2 end n1)
  )

  (while (< start  (- end 1))

    (setq sum (+ sum start))
    (setq start(1+ start))
    (princ start)
    (princ "+")

  )

  (princ "\t=")
  (princ sum)
  (princ)
)

반복문 while과 repeat를 중첩 입력한정수를 결과값으로 가지는 숫자들을 출력하면서 출력한 수를 알준다.

세번중첩했을뿐인데 괄호관리가 힘들다.
코드를 한번에 쓰는게아니라 그때그때 편집하는데 괄호관리하는거는 좀 난감하다.
오토리습 출력함수 c의 prlntf같은거 없을까?

(defun c:asdf()

  (setq num(getint"\n정수를 입력해주세요."))


  (setq i 0)
  (setq j 0)
  (setq k 0)
  (setq sum 0)

  (while (<= i 100)
    (setq j 0)
    (while (<= j 100)
      (setq k 0)
      (while (<= k 100)
;(setq k 0)
(if
 (= (+ i j k) num)
 (progn
   (princ "\n")
   (princ i)
   (princ "+")
   (princ j)
   (princ "+")
   (princ k)
   (princ "=")
   (princ (+ i j k))

            (setq sum (+ sum 1))
 
 );progn끝

         );if

(setq k (+ k 1))

      );while k
   
      (setq j (+ j 1))

     );while j
 
    (setq i (+ i 1))
 
   );while i

  (princ "\n num 의 합을나눈수는")(princ sum)
  (princ)
  )



(defun c:asdfa()

  (setq num(getint"\n정수를 입력해주세요."))

  (setq i 0)
  (setq sum 0)

  (repeat 100
    (setq j 0)
 
    (repeat 100
      (setq k 0)

      (repeat 100

(if (= (+ i j k) num)
 (progn
   (princ "\n")
 (princ i)
 (princ "+")
 (princ j)
 (princ "+")
 (princ k)
 (princ "=")
 (princ (+ i j k))
 (setq sum (1+ sum))
   )
 )
(setq k (1+ k))
)
      (setq j (1+ j))
      )
    (setq i (1+ i))
    )

  (princ "\n원하는숫자는")
  (princ sum)
 (princ)
  )