﻿' Calculate Triangle Areas and Perimeters
' RJM Programming
' June, 2014
' Via Yahoo Answers reference: https://au.answers.yahoo.com/question/index?qid=20140531154649AA2OMmi

Module Module1

    Sub Main()
        Dim p As Double
        Dim area As Double
        Dim s1 As String = InputBox("Please enter side1 length of triangle (whose area we'll calculate) as a positive number else negative angle1 in degrees", "0.0")
        Dim s2 As String = InputBox("Please enter side2 length of triangle (whose area we'll calculate) as a positive number else negative angle2 in degrees", "0.0")
        Dim s3 As String = InputBox("Please enter side3 length of triangle (whose area we'll calculate) as a positive number else negative angle3 in degrees", "0.0")
        If CDbl(s1) < 0.0 And CDbl(s2) < 0.0 And CDbl(s3) < 0.0 Then
            Console.Out.WriteLine("Cannot solve area for this triangle.")
            MsgBox("Cannot solve area for this triangle.") ' , "")
        ElseIf CDbl(s1) > 0.0 And CDbl(s2) > 0.0 And CDbl(s3) > 0.0 Then
            p = (CDbl(s1) + CDbl(s2) + CDbl(s3)) / 2.0
            area = Math.Sqrt(p * (p - CDbl(s1)) * (p - CDbl(s2)) * (p - CDbl(s3)))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (CDbl(s1) + CDbl(s2) + CDbl(s3)).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (CDbl(s1) + CDbl(s2) + CDbl(s3)).ToString()) ', area.ToString())
        ElseIf CDbl(s1) > 0.0 And CDbl(s2) > 0.0 And CDbl(s3) < 0.0 Then
            Dim as2 As Double = Math.Asin(Math.Sin(Math.Abs(CDbl(s3)) * Math.PI / 180.0) * CDbl(s2) / CDbl(s1)) * 180.0 / Math.PI
            Dim as1 = 180.0 - Math.Abs(CDbl(s3)) - as2
            Dim ss3 As Double = CDbl(s1) * Math.Sin(CDbl(as1) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(s3) * Math.PI / 180.0))
            p = (CDbl(s1) + CDbl(s2) + ss3) / 2.0
            area = Math.Sqrt(p * (p - CDbl(s1)) * (p - CDbl(s2)) * (p - ss3))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss3 + CDbl(s2) + CDbl(s1)).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss3 + CDbl(s2) + CDbl(s1)).ToString()) ', area.ToString())
        ElseIf CDbl(s1) > 0.0 And CDbl(s2) < 0.0 And CDbl(s3) > 0.0 Then
            Dim as1 As Double = Math.Asin(Math.Sin(Math.Abs(CDbl(s2)) * Math.PI / 180.0) * CDbl(s1) / CDbl(s3)) * 180.0 / Math.PI
            Dim as3 = 180.0 - Math.Abs(CDbl(s2)) - as1
            Dim ss2 As Double = CDbl(s1) * Math.Sin(CDbl(as3) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(as1) * Math.PI / 180.0))
            p = (CDbl(s1) + CDbl(s3) + ss2) / 2.0
            area = Math.Sqrt(p * (p - CDbl(s1)) * (p - CDbl(s3)) * (p - ss2))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss2 + CDbl(s1) + CDbl(s3)).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss2 + CDbl(s1) + CDbl(s3)).ToString()) ', area.ToString())           
        ElseIf CDbl(s1) < 0.0 And CDbl(s2) > 0.0 And CDbl(s3) > 0.0 Then
            Dim as3 As Double = Math.Asin(Math.Sin(Math.Abs(CDbl(s1)) * Math.PI / 180.0) * CDbl(s3) / CDbl(s2)) * 180.0 / Math.PI
            Dim as2 = 180.0 - Math.Abs(CDbl(s1)) - as3
            Dim ss1 As Double = CDbl(s2) * Math.Sin(CDbl(as2) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(s1) * Math.PI / 180.0))
            p = (CDbl(s3) + CDbl(s2) + ss1) / 2.0
            area = Math.Sqrt(p * (p - ss1) * (p - CDbl(s2)) * (p - CDbl(s3)))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s2) + CDbl(s3)).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s2) + CDbl(s3)).ToString()) ', area.ToString())
        ElseIf CDbl(s1) > 0.0 And CDbl(s2) < 0.0 And CDbl(s3) < 0.0 Then
            Dim as1 = 180.0 - Math.Abs(CDbl(s3)) - Math.Abs(CDbl(s2))
            Dim ss2 As Double = CDbl(s1) * Math.Sin(CDbl(as1) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(s3) * Math.PI / 180.0))
            Dim ss3 As Double = CDbl(s1) * Math.Sin(Math.Abs(CDbl(s2) * Math.PI / 180.0)) / Math.Sin(Math.Abs(CDbl(s3) * Math.PI / 180.0))
            p = (CDbl(s1) + ss2 + ss3) / 2.0
            area = Math.Sqrt(p * (p - CDbl(s1)) * (p - ss2) * (p - ss3))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss2 + CDbl(s1) + ss3).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss2 + CDbl(s1) + ss3).ToString()) ', area.ToString())
        ElseIf CDbl(s1) < 0.0 And CDbl(s2) < 0.0 And CDbl(s3) > 0.0 Then
            Dim as3 = 180.0 - Math.Abs(CDbl(s1)) - Math.Abs(CDbl(s2))
            Dim ss1 As Double = CDbl(s3) * Math.Sin(CDbl(as3) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(s2) * Math.PI / 180.0))
            Dim ss2 As Double = CDbl(s3) * Math.Sin(Math.Abs(CDbl(s1) * Math.PI / 180.0)) / Math.Sin(Math.Abs(CDbl(s2) * Math.PI / 180.0))
            p = (ss1 + ss2 + CDbl(s3)) / 2.0
            area = Math.Sqrt(p * (p - ss1) * (p - ss2) * (p - CDbl(s3)))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s3) + ss2).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s3) + ss2).ToString()) ', area.ToString())
        ElseIf CDbl(s1) < 0.0 And CDbl(s2) > 0.0 And CDbl(s3) < 0.0 Then
            Dim as2 = 180.0 - Math.Abs(CDbl(s1)) - Math.Abs(CDbl(s3))
            Dim ss1 As Double = CDbl(s2) * Math.Sin(CDbl(as2) * Math.PI / 180.0) / Math.Sin(Math.Abs(CDbl(s1) * Math.PI / 180.0))
            Dim ss3 As Double = CDbl(s2) * Math.Sin(Math.Abs(CDbl(s3) * Math.PI / 180.0)) / Math.Sin(Math.Abs(CDbl(s1) * Math.PI / 180.0))
            p = (ss1 + CDbl(s2) + ss3) / 2.0
            area = Math.Sqrt(p * (p - ss1) * (p - CDbl(s2)) * (p - ss3))
            Console.Out.WriteLine("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s2) + ss3).ToString())
            MsgBox("Area for this triangle is " + area.ToString() + " and its Perimeter is " + (ss1 + CDbl(s2) + ss3).ToString()) ', area.ToString())
        Else
            Console.Out.WriteLine("Cannot solve area for this triangle.")
            MsgBox("Cannot solve area for this triangle.") ', "")
        End If
        Console.ReadKey()
    End Sub

End Module
