Solved

Vb.net calculation problem.

Posted on 2009-03-31
4
258 Views
Last Modified: 2012-05-06
How am i supposed to set this up? I've tried using what I've got but it won't calculate what I need to properly. Breakdown:
I have a program were I'm supposed to calculate books read and award points
based on a certain amount of books read by the reader. In the place of some numbers I used constants.
1-3 books = 10pts ea.
next 3 books = 15pts ea.
6 or more = 20pts ea.
'Declared Constants

    Const BOOKS_READ1Integer As Integer = 10

    Const BOOKS_READ2Integer As Integer = 15

    Const BOOKS_READ3Integer As Integer = 20

    Const MAX_BOOKS_ALLOWED_READInteger As Integer = 10000

 

    'Declared Variables

    Dim totalPointsDecimal, booksReadInteger, bookPoints, _

    customerCountInteger, numberBooksReadInteger, totalBooksRead, _

    numbooksRead, average, booksRead As Integer

 

 

    Private Function calculatePointsDataType(ByVal bookValue As String) As Integer

        Dim bookPoints As Integer

 

        Try

            Dim numberBooksRead As Integer = Integer.Parse(numBooksReadTextBox.Text)

 

            If numberBooksRead <= 1 And 3 Then

                bookPoints = numberBooksRead * BOOKS_READ1Integer

            ElseIf numberBooksRead < 3 And = 6 Then

                bookPoints = 3 * BOOKS_READ1Integer + numberBooksRead - 3 * BOOKS_READ2Integer

            ElseIf numberBooksRead >= 6 And MAX_BOOKS_ALLOWED_READInteger Then

                bookPoints = (3 * BOOKS_READ2Integer) + (3 * BOOKS_READ2Integer) + (numberBooksRead - 6) * (BOOKS_READ3Integer)

 

            End If

        Catch ex As Exception

        End Try

 

        Return bookPoints

    End Function

Open in new window

0
Comment
Question by:shaunareno
4 Comments
 

Author Comment

by:shaunareno
ID: 24035832
Revised Question:
not the calculation but, the logic is what I'm having trouble with.

0
 
LVL 84

Expert Comment

by:ozo
ID: 24036112
what are you trying to do when you say
  And 3
?
what are you trying to do when you say
And = 6


 numberBooksRead - 3 * BOOKS_READ2Integer
would be interpreted under customary precedence rules as
 numberBooksRead - (3 * BOOKS_READ2Integer)
whereas you probably meant
(numberBooksRead - 3)  * BOOKS_READ2Integer
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24036207
It seems like from your line here:

    bookPoints = (3 * BOOKS_READ2Integer) + (3 * BOOKS_READ2Integer) + (numberBooksRead - 6) * (BOOKS_READ3Integer)

That you could instead loop thru and just tally up the points as you go:

    Private Function CalculateBookPoints() As Integer
        Dim points As Integer = 0
        Dim numberBooksRead As Integer = Integer.Parse(numBooksReadTextBox.Text)
        For i As Integer = 1 To numberBooksRead
            If i <= 3 Then
                points = points + BOOKS_READ1Integer
            ElseIf i <= 6 Then
                points = points + BOOKS_READ2Integer
            Else
                points = points + BOOKS_READ3Integer
            End If
        Next
        Return points
    End Function
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

A short article about problems I had with the new location API and permissions in Marshmallow
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now