Here are some Visual Basic answers to the programming problems from the quiz.
Option Explicit
Private Sub cmdDisplay_Click()
Rem Calculate population densities of states
Rem This subroutine copied exactly from the text book
picDensity.Cls
Call CalculateDensity("Hawaii", 1134750, 6471)
Call CalculateDensity("Alaska", 570345, 591000)
End Sub
Private Sub CalculateDensity( _
state As String, _
pop As Single, _
area As Single _
)
Rem Calculates and prints population density
Rem This subroutine modified from one given in the text
Dim rawDensity As Single ' floating-point density
Dim denrounded As Integer ' rounded density
Let rawDensity = CalculateRawDensity(pop, area)
Let denrounded = CalculateWholeNumber(rawDensity)
Rem Format the floating-point number using 2 decimal places
picDensity.Print _
"The density of "; state; " is "; denrounded; _
" ("; Format(rawDensity, "Standard"); ")"; _
" people per square mile."
End Sub
Private Function CalculateRawDensity( _
pop As Single, _
area As Single _
) As Single ' RET: floating-point density
Rem Calculates the density of the population
CalculateRawDensity = pop / area End Function
Private Function CalculateWholeNumber( _
inum As Single _
) As Integer ' RET: rounded number
Rem Round a number inum to its nearest integer
CalculateWholeNumber = Int(inum + 0.5) End Function
Option Explicit
Private Sub cmdDo_Click()
Rem Get a full name and generate an Algonquin e-mail address
Dim nom As String
Let nom = txtName.Text
picId.Cls
picId.Print GetLast(nom); GetInitial(nom);
picId.Print "@algonquincollege.com"
End Sub
Private Function GetInitial( _
str As String _
) As String ' RET: lower-case first initial from name
Rem Extracts the first initial from the str
Let GetInitial = LCase(Left(str, 1)) End Function
Private Function GetLast( _
str As String _
) As String ' RET: last name
Rem Extracts 6 characters of the last name from the string
Dim n As Integer ' position of first blank
Dim last As String ' last name (after blank)
Let n = Len(str) - InStr(str, " ")
Let last = Right(str, n)
Let GetLast = LCase(Left(last, 6))
End Function
Alternate version of GetLast using no unnecessary variables:
Private Function GetLast( _
str As String _
) As String ' RET: last name
Rem Extracts 6 characters of the last name from the string
Let GetLast = LCase(Left(Right(str,Len(str)-InStr(str," ")),6))
End Function