Hello!

I currently am enrolled in an intro to VB2008. I have done well thus far but have hit a snag on Chapter 5 programming challenge 4 on p350 of the 4th edition(yellow). I swear to you I have put probably 10 hours into this embarressingly and I am ready to throw my laptop into the wall lol.
The "Hotel Occupancy" challenge states there are 8 floors, 30 rooms per floor. I am asked to design a program that prompts the user 8 separate times with an input box so they can enter the rooms that are filled on each floor.
The program should display in a listbox the floor #, rooms occupied on that floor, and percentage of rooms occupied on that floor.In addition to the list box, two labels on the form should display total occupancy percentage for entire hotel and total rooms occupied respectively.
I am new but familiar with loops and such but this one has got me. Any ideas a plus-Thanks

Recommended Answers

All 3 Replies

First, PM a mod and have this thread moved to the .NET forum since this is the "classic vb verision 4/5/6 and not versions for versions2002/2003/2005/2008/2010.

Then, there are several ways in which to solve this. A single do while result <> "" or eight of those (one for each floor) or even a recursive call to the proceedure that collects this information.

Good Luck

Heres an example of nested loops that acheives what you are trying to do:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim TotalFilledRooms As Integer = 0
        Dim perc As Double

        For i As Integer = 1 To 8
            Dim response As Boolean = False
            Dim filledRooms As Integer

            While (Not response) Or (filledRooms < 0 Or filledRooms > 30)
                response = Integer.TryParse(InputBox("How many rooms on floor " & i.ToString() & " are occupied?", "Enter number of occupied rooms"), filledRooms)
            End While

            perc = Math.Round((filledRooms / 30) * 100, 1)

            TotalFilledRooms += filledRooms

            Dim floor As String = "Floor " & i.ToString() & ": " & filledRooms.ToString() & "/30 " & perc.ToString() & "%"
            lstFloors.Items.Add(floor)
        Next

        perc = Math.Round((TotalFilledRooms / 240) * 100, 1)
        lblOccRooms.Text = TotalFilledRooms.ToString() & "/240"
        lblOccPerc.Text = perc.ToString() & "%"

    End Sub

The for loop ensures that 8 values are requested.
Theres some basic validation in the while loop, if the returned value cannot be parsed as an integer or the integer returned is outside the range 0-30 then the input window will reappear until a valid value is entered.

What Am I missing to get this to calculate 563.00 loan, 1% interest, 5 monthly payments of 116.00?

[private Sub btnDisplayBal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayBal.Click
        Dim Payment As Double = 116
        Dim LoanAmt As Double = 563
        Dim InterestRt As Double = 0.01
        Dim BalDue As Double
        Dim AmtOwed As Double
        Dim fmtStr As String = "{0,2}{4,10}"

        lstboxBal.Items.Clear()
        'Figure out how to do the math for the Intrs Rate and Mthly pymt
        'Minus total loan amount to get balance dsplyd for nxt 5 mths
        'I need a loop to show current balance after payment + interest
        'I need 2 columns month and current balance
        For Month As Integer = 1 To 5
            AmtOwed = Payment * InterestRt
            BalDue = Payment - LoanAmt
            lstboxBal.Items.Add(BalDue)
        Next

    End Sub
End Class]
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.