[VBA]IF문의 이해 : 이차방정식 풀기 Solve the quadratic equation using Excel

문제) 엑셀을 이용하여 이차방정식( ax^2 + bx + c = 0)을 풀어라

출제의도) If문을 이해한다.

해법)

1) 첫행(셀A1부터 셀E1까지)에 방정식에 필요한 계수들을 기록한다.

2) 둘째 행을 계수의 입력과 근에 대한 출력으로 설정한다.

3) 마지막 셀(셀F2)에 프로시저를 실행시킬 ‘단추’를 둔다.

사용자 삽입 이미지

4) VBA로 이차방정식을 푸는 프로시저를 다음과 같이 작성한다.

특징: 실근뿐만 아니라 허근도 구한다. 불능과 부정도 판정한다. 설령 이차항의 계수가 0일지라도, 즉 이차방정식이 아닐지라도 계산한다.

Sub SolveQuadraticEquation()
  Dim a As Single
  Dim b As Single
  Dim c As Single
  'Dim x1 As Single '실근만 있을때는 유효하나, 허근이 있으면 좀 곤란하게 되지요.
  'Dim x2 As Single
  Dim d As Single '판별식 discriminant
  Dim u As Single
  Dim v As Single
  Dim output1 As String '허근의 표시 문자인 i를 출력하기 위해서,
  Dim output2 As String '그리고 부정과 불능을 출력하기 위해서 문자열로 처리함.

'1) 셀에서 값을 읽어온다. Read the varibles from the excel cells
  a = Range("A2")
  b = Range("B2")
  c = Range("C2")
  '
  '2) find the roots of equation
  If a <> 0 Then ' --> quadratic equation
    d = b ^ 2 - 4 * a * c
    u = -b / (2 * a)
    If d > 0 Then
      '서로 다른 두 실근(實根)을 갖는다.
      v = Sqr(d) / (2 * a)
      output1 = u + v
      output2 = u - v
    ElseIf d < 0 Then
      '허근(虛根)을 갖는다.
      v = Sqr(-d) / (2 * a)
      output1 = u & "+" & v & "i"
      output2 = u & "-" & v & "i"
    Else 'd=0
      '중근(重根)을 갖는다.
      output1 = u
      output2 = output1
    End If
  Else 'a = 0
    If b <> 0 Then '--> linear equation
      output1 = -c / b
      output2 = "None"
    Else 'b= 0
      If c <> 0 Then
        output1 = "不能"
        output2 = "不能"
      Else 'c = 0
        output1 = "不定" 'indeterminate
        output2 = "不定"
      End If
    End If
  End If
  '
  '3)출력 Output
  Range("D2") = output1
  Range("E2") = output2
  '
End Sub

Print Friendly, PDF & Email