Random Stuff Forums
 

Go Back   Random Stuff Forums > The Archives > Archives

Archives Old useless posts are moved here.

 
 
LinkBack Thread Tools Display Modes
  #1  
Old 10-01-2009, 12:40 AM
Jay's Avatar
Jay (Offline)
New Member
 
Join Date: Sep 2007
Location: Behind You.
Posts: 37
Jay is an unknown quantity at this point
Default Need Help with VB .NET

Okay, I am making a program and I've come across a problem. I know a way to get the program to do what I want, but it will take way too long. I want to know if there is a shorter way.

 If intInputOneSimpleCalculation = 2 Then

            intSimpleFirstNumber = txtNumber1.Text
            intSimplePower1 = txtPower1.Text
            strOperatorOne = comboOperator1.Text
            intSimpleSecondNumber = txtNumber2.Text
            intSimplePower2 = txtPower2.Text

            Me.Close()

            If frmMain.rtbMain.Text = "" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + "Question " & intQNumber & Chr(13) + Chr(13) & "= " & intSimpleFirstNumber & "^" & intSimplePower1 & " " & strOperatorOne & " " & intSimpleSecondNumber & "^" & intSimplePower2
            Else
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) + Chr(13) + "Question " & intQNumber & Chr(13) + Chr(13) & "= " & intSimpleFirstNumber & "^" & intSimplePower1 & " " & strOperatorOne & " " & intSimpleSecondNumber & "^" & intSimplePower2
            End If
            frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 & " " + strOperatorOne & " " & intSimpleSecondNumber ^ intSimplePower2


            If strOperatorOne = "+" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 + intSimpleSecondNumber ^ intSimplePower2
            ElseIf strOperatorOne = "-" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 - intSimpleSecondNumber ^ intSimplePower2
            ElseIf strOperatorOne = "*" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 * intSimpleSecondNumber ^ intSimplePower2
            ElseIf strOperatorOne = "/" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 / intSimpleSecondNumber ^ intSimplePower2
            End If

        ElseIf intInputOneSimpleCalculation = 3 Then

            intSimpleFirstNumber = txtNumber1.Text
            intSimplePower1 = txtPower1.Text
            strOperatorOne = comboOperator1.Text
            intSimpleSecondNumber = txtNumber2.Text
            intSimplePower2 = txtPower2.Text
            strOperatorTwo = comboOperator2.Text
            intSimpleThirdNumber = txtNumber3.Text
            intSimplePower3 = txtPower3.Text

            Me.Close()

            If frmMain.rtbMain.Text = "" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + "Question " & intQNumber & Chr(13) + Chr(13) & "= " & intSimpleFirstNumber & "^" & intSimplePower1 & " " & strOperatorOne & " " & intSimpleSecondNumber & "^" & intSimplePower2 & " " & strOperatorTwo & " " & intSimpleThirdNumber & "^" & intSimplePower3
            Else
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) + Chr(13) + "Question " & intQNumber & Chr(13) + Chr(13) & "= " & intSimpleFirstNumber & "^" & intSimplePower1 & " " & strOperatorOne & " " & intSimpleSecondNumber & "^" & intSimplePower2 & " " & strOperatorTwo & " " & intSimpleThirdNumber & "^" & intSimplePower3
            End If
            frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 & " " + strOperatorOne & " " & intSimpleSecondNumber ^ intSimplePower2 & " " & strOperatorTwo & " " & intSimpleThirdNumber ^ intSimplePower3

            'Calculating with different Operators (every possibility)
            If strOperatorOne = "+" And strOperatorTwo = "+" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 + intSimpleSecondNumber ^ intSimplePower2 + intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "+" And strOperatorTwo = "-" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 + intSimpleSecondNumber ^ intSimplePower2 - intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "+" And strOperatorTwo = "*" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 + intSimpleSecondNumber ^ intSimplePower2 * intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "+" And strOperatorTwo = "/" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 + intSimpleSecondNumber ^ intSimplePower2 / intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "-" And strOperatorTwo = "-" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 - intSimpleSecondNumber ^ intSimplePower2 - intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "-" And strOperatorTwo = "+" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 - intSimpleSecondNumber ^ intSimplePower2 + intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "-" And strOperatorTwo = "*" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 - intSimpleSecondNumber ^ intSimplePower2 * intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "-" And strOperatorTwo = "/" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 - intSimpleSecondNumber ^ intSimplePower2 / intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "*" And strOperatorTwo = "*" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 * intSimpleSecondNumber ^ intSimplePower2 * intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "*" And strOperatorTwo = "+" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 * intSimpleSecondNumber ^ intSimplePower2 + intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "*" And strOperatorTwo = "-" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 * intSimpleSecondNumber ^ intSimplePower2 - intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "*" And strOperatorTwo = "/" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 * intSimpleSecondNumber ^ intSimplePower2 / intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "/" And strOperatorTwo = "/" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 / intSimpleSecondNumber ^ intSimplePower2 / intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "/" And strOperatorTwo = "+" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 / intSimpleSecondNumber ^ intSimplePower2 + intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "/" And strOperatorTwo = "-" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 / intSimpleSecondNumber ^ intSimplePower2 - intSimpleThirdNumber ^ intSimplePower3
            ElseIf strOperatorOne = "/" And strOperatorTwo = "*" Then
                frmMain.rtbMain.Text = frmMain.rtbMain.Text + Chr(13) & "= " & intSimpleFirstNumber ^ intSimplePower1 / intSimpleSecondNumber ^ intSimplePower2 * intSimpleThirdNumber ^ intSimplePower3
            End If
The bolded bits are what I am doing. As you can see, if they want to calculate with 2 numbers or 3 numbers, it will work and display the answer. But I want to be able to get up to 8 numbers in the calculation, and this would mean hundreds of possibilities of operators. If there is a faster or easier way to do this, please reply.

Thanks,
Jay.
__________________

To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
  #2  
Old 10-01-2009, 09:30 AM
Flaming Idiot (Offline)
Fire Client Creator
 
Join Date: Mar 2007
Location: Canada
Posts: 167
Flaming Idiot is an unknown quantity at this point
Default

You can massively shorten the code by using delegates and string formats.

Static Operators As Dictionary(Of Char, Func(Of Decimal, Decimal, Decimal))
If Operators Is Nothing Then
    Operators = New Dictionary(Of Char, Func(Of Decimal, Decimal, Decimal))
    Operators.Add("+", AddressOf Decimal.Add)
    Operators.Add("-", AddressOf Decimal.Subtract)
    Operators.Add("*", AddressOf Decimal.Multiply)
    Operators.Add("/", AddressOf Decimal.Divide)
End If

intSimpleFirstNumber = Double.Parse(txtNumber1.Text)
intSimplePower1 = Double.Parse(txtPower1.Text)
intSimpleSecondNumber = Double.Parse(txtNumber2.Text)
intSimplePower2 = Double.Parse(txtPower2.Text)
strOperatorOne = comboOperator1.Text
Dim Power1 = intSimpleFirstNumber ^ intSimplePower1
Dim Power2 = intSimpleSecondNumber ^ intSimplePower2

Select Case intInputOneSimpleCalculation
    Case 2

        Dim Result = Operators(strOperatorOne)(Power1, Power2)
        rtbMain.Text &= String.Format("||Question: {0}||= {1} ^ {2} {3} {4} ^ {5}|= {6} {3} {7}|= {8}", _
                        intQNumber, intSimpleFirstNumber, intSimplePower1, strOperatorOne, intSimpleSecondNumber, intSimplePower2, _
                        Power1, Power2, Result).Replace("|", vbNewLine)
    Case 3

        strOperatorTwo = comboOperator2.Text
        intSimpleThirdNumber = Double.Parse(txtNumber3.Text)
        intSimplePower3 = Double.Parse(txtPower3.Text)

        Dim Power3 = intSimpleThirdNumber ^ intSimplePower3

        Dim Result = Operators(strOperatorOne)(Power1, Operators(strOperatorTwo)(Power2, Power3))
        rtbMain.Text &= String.Format("||Question: {0}||= {1} ^ {2} {3} {4} ^ {5} {6} {7} ^ {8}|= {9} {3} {10} {6} {11}|= {12}", _
                        intQNumber, intSimpleFirstNumber, intSimplePower1, strOperatorOne, intSimpleSecondNumber, intSimplePower2, _
                        strOperatorTwo, intSimpleThirdNumber, intSimplePower3, Power1, Power2, Power3, Result).Replace("|", vbNewLine)

End Select
Me.rtbMain.Text = rtbMain.Text.Trim(vbNewLine.ToCharArray)
It may also be possible to use a DataRepeater to do this, which could make it much easier.
__________________

To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
  #3  
Old 18-01-2009, 12:44 AM
Jay's Avatar
Jay (Offline)
New Member
 
Join Date: Sep 2007
Location: Behind You.
Posts: 37
Jay is an unknown quantity at this point
Default

You are a legend. Cheers.
__________________

To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -5. The time now is 08:06 PM.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0
Copyright © 2006 - 2012, Rsforums.org