문제에서 빗변, 높이, 밑변 세가지 정보를 가지고 직각삼각형 여부를 판별하라고 했음
이 때 높이 = H / 밑변 = B / 빗변 = A
나머지 한 변을 C라는 변수로 설정
C를 구하기 위해 X라는 변수를 설정.
이 때 변수들을 정수형으로 선언하면 표현범위 초과라는 오류가 뜨고 (Arithmetic operation resulted in an overflow.)
DOUBLE로 선언하면 소숫점 지랄나는지 무조건 직각삼각형이 아니라고 우김. (5,4,3 값 입력-> 직각 아니라고 우김)
내가 짠 코드는
Public Class Form1
Dim a, b, h, x, c As Double
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
a = Val(TextBox1.Text) = 빗변 길이
b = Val(TextBox3.Text) = 밑변 길이
h = Val(TextBox2.Text) = 높이
x = System.Math.Sqrt(b ^ 2 - h ^ 2) = X 길이
c = System.Math.Sqrt(h ^ 2 + (a - x) ^ 2) = 나머지 한 변의 길이
If a ^ 2 = (c ^ 2) + (b ^ 2) Then
MsgBox("직각삼각형입니다.")
Else
MsgBox("직각삼각형이 아닙니다.")
End If
End Sub
End Class
문제가 데이터 타입의 문제가 맞을까?
아니면 계산식이 잘못된걸까?
전에 한 번 5시간 잡고 늘어졌을 때 성공했는데
다시 해보니까 막혀서 너무 빡쳐 ㅠㅠ
과제구나
경영학 전공이양ㅋㅋㅋㅋ 쉬운 언어 찾다가 비주얼 베이직이 눈에 보이는 결과물이 바로 나오길래 이거 책 사서 해보는데 책에 무슨 풀이가 없음 ;;
나도 경영학 전공하고 지금은 개발자함 ㅋㅋ 옛날생각나네 여튼 연산하면서 오차가 생겨서 그러는거 같음. 예를 들자면 0.1 + 0.2 = 0.300000000012 뭐 이런식으로 (너도 알듯이) 보통 프로그래밍 언어에서 이런 경우 해당 미세 오차 값 범위를 명시하는 경우가 많음
https://docs.microsoft.com/ko-kr/dotnet/api/system.double.epsilon?view=net-5.0
뭐 이런 느낌으로 Double.Epsilon 값이 있을텐데 이 오차보다 적다면 직각 삼각형이라고 패쓰해 버려
checkvalue AS Double checkvalue = a ^ 2 - ((c ^ 2) + (b ^ 2) if checkvalue <= Double.Epsilon else
오 선생님 고맙습니당 오차값 없이 계산하는게 아니라 오차값을 무시하는 방법이 있군요 ㅋㅋㅋ 자고 일어나서 해볼게염
wㅈ고수 나는 손도못댐;;
좆고수 기만ㄴ
앰.. .씨발 존나 옛날 수십년전언어 안쓰는걸 왜갈켜주냐 거기는?
혼자 공부하는건뎅..
진지하게 코딩공부할거면 비쥬얼베이직 접으셈
이거만 풀고...