Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Vb.net calculation problem.

Posted on 2009-03-31
4
266 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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A short article about problems I had with the new location API and permissions in Marshmallow
This is about my first experience with programming Arduino.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

791 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