Extended Prelude to Programming

Third Edition

Solutions to Selected Programming Problems

for the Instructor

© 2007 Pearson Education

Chapter 1

Problem 2

Declare Price, Tip As Real

Write “Enter the price of the meal.”

Input Price

Set Tip = 0.15 * Price

Write “Price of the meal: ”, Price

Write “Amount of the tip: ”, Tip

Problem 3

Declare C, F As Real

Write “Enter a temperature in degrees Celsius.”

Input C

Set F = (9 / 5) * C + 32

Write “Temperature in degrees Celsius: ”, C

Write “Temperature in degrees Fahrenheit: ”, F

Problem 4

Declare AtBats, Hits As Integer

Declare Average As Real

Write “Enter the number of at bats.”

Input AtBats

Write “Enter the number of at hits.”

Input Hits

Set Average = Hits / AtBats

Write “At bats: ”, AtBats

Write “Hits: ”, Hits

Write “Batting average: ”, Average

Problem 5

Declare P, R, T, I, FV As Real

Write “Enter the amount to be invested.”

Input P

Write “Enter the rate of interest as a decimal.”

Input R

Write “Enter the term of the investment (in years).”

Input T

Set I = P * R * T

Set FV = P + I

Write “The amount invested: ”, P, “ dollars”

Write “The rate of interest: ”, R * 100, “%”

Write “The term of the investment: ”, T, “ years”

Write “The future value: ”, FV, “ dollars”

Problem 6

Declare FirstName, LastName, FullName As String

Declare MiddleInitial As Character

Write “Enter the first name.”

Input FirstName

Write “Enter the middle initial.”

Input MiddleInitial

Write “Enter the last name.”

Input LastName

Set FullName = FirstName + “ ” + MiddleInitial + “. ” + LastName

Write “The full name is”

Write FullName

Chapter 2

Problem 1

Main module

Declare Sales, PercentRate, Commission As Real

Write “Commission Calculator”

Call Input Data module

Call Process Data module

Call Output Results module

End Program

Input Data module

Write “Enter the sales total for the month.”

Input Sales

Write “Enter the commission rate as a percentage.”

Input PercentRate

Process Data module

Declare Rate As Real

Set Rate = PercentRate / 100

Set Commission = Sales * Rate

Output Results module

Write “Sales for the month: ”, Sales, “ dollars”

Write “Commission rate: ”, PercentRate, “%”

Write “Commission for the month: ”, Commission, “ dollars”

Problem 2

Main module

Declare Name As String

Declare Pounds, Ounces As Integer

Declare Price, Unit Price As Real

Write “Unit Price Conversion Program”

Call Input Data module

Call Process Data module

Call Output Results module

End Program

Input Data module

Write “Enter the name of the item.”

Input Name

Write “Enter the price of the item.”

Input Price

Write “Enter the weight in pounds, ounces.”

Input Pounds, Ounces

Process Data module

Declare TotalOunces As Integer

Set TotalOunces = 16 * Pounds + Ounces

Set UnitPrice = Price / TotalOunces

Output Results module

Write “Item: ”, Name

Write “Price: $”, Price

Write “Weight: ”, Pounds, “ pounds, ”, Ounces, “ounces”

Write “Unit price: ”, UnitPrice

Problem 4

Main module

Declare ID As String

Declare PayRate, RegularHours, OvertimeHours As Real

Declare GrossPay, Deductions, NetPay As Real

Write “Employee Pay Program”

Call Input Data module

Call Process Data module

Call Output Results module

End Program

Input Data module

Write “Enter the employee’s ID number.”

Input ID

Write “Enter the employee’s rate of pay.”

Input PayRate

Write “Enter the hours worked: regular, overtime”

Input RegularHours, OvertimeHours

Write “Enter the employee’s deductions.”

Input Deductions

Process Data module

Set GrossPay = PayRate * (RegularHours + 1.5 * OvertimeHours)

Set NetPay = GrossPay - Deductions

Output Results module

Write “Employee ID and pay rate: ”, ID, “ $”, PayRate, “ per hour”

Write “Hours worked (regular/overtime): ”, RegularHours, “/”, OvertimeHours

Write “Gross pay: $”, GrossPay

Write “Deductions: $”, Deductions

Write “Net pay: $”, NetPay

Problem 6

Main module

Declare LoanAmount, PercentRate, MonthlyPayment As Real

Declare NumberOfPayments As Integer

Write “Monthly Payment Calculator”

Call Input Data module

Call Process Data module

Call Output Results module

End Program

Input Data module

Write “Input the amount of the loan.”

Input LoanAmount

Write “Enter the rate of interest as a percentage.”

Input PercentRate

Write “Enter the number of payments to be made.”

Input NumberOfPayments

Process Data module

Declare Rate, Power As Real

Set Rate = PercentRate / 100

Set Power = (1 + Rate) ^ NumberOfPayments

Set MonthlyPayment = LoanAmount * Rate* Power / (Power - 1)

Output Results module

Write “Amount of loan: $”, LoanAmount

Write “Rate of interest: ”, PercentRate, “%”

Write “Number of payments: ”, NumberOfPayments

Write “Monthly payment: $”, MonthlyPayment

Chapter 3

Problem 1

Main module

Declare Number As Real

Call Input Number module

Call Display Message module

End Program

Input Number module

Write “Enter a number.”

Input Number

Display Message module

If Number > 0 Then

Write “Positive”

End If

If Number < 0 Then

Write “Negative”

End If

If Number = 0 Then

Write “Neither Positive or Negative”

End If

Problem 2

Main module

Declare Num1, Num2 As Real

Declare Choice As Integer

Write “Basic Calculator”

Call Input Data module

Call Input Choice module

Select Case Of Choice

Case 0:

Write “Goodbye”

Case 1:

Call Display Sum module

Case 2:

Call Display Difference module

Case 3:

Call Display Product module

Case 4:

Call Display Quotient module

End Case

End Program

Input Data module

Write “Enter two numbers.”

Input Num1, Num2

Input Choice module

Write “0 - Quit program”

Write “1 - Display sum”

Write “2 - Display difference”

Write “3 - Display product”

Write “4 - Display quotient”

Input Choice

Display Sum module

Declare Sum As Real

Set Sum = Num1 + Num2

Write “The sum of ”, Num1, “ and ”, Num2, “ is:”

Write Sum

Display Difference module

Declare Difference As Real

Set Difference = Num1 - Num2

Write “The difference of ”, Num1, “ and ”, Num2, “ is:”

Write Difference

Display Product module

Declare Product As Real

Set Product = Num1 * Num2

Write “The product of ”, Num1, “ and ”, Num2, “ is:”

Write Product

Display Quotient module

Declare Quotient As Real

If Num2 > 0 Then

Set Quotient = Num1 / Num2

Write “The quotient of ”, Num1, “ and ”, Num2, “ is:”

Write Quotient

Else

Write “No quotient -- Divisor is 0"

End If

Problem 4

Main module

Declare X, Area As Real

Declare Choice As Integer

Write “Area Calculator”

Call Input Data module

Call Input Choice module

Select Case Of Choice

Case 0:

Write “Goodbye”

Case 1:

Call Square module

Case 2:

Call Circle module

Case 3:

Call Triangle module

End Case

End Program

Input Data module

Write “Enter a positive number for”

Write “the side of a square or equilateral triangle”

Write “or the radius of a circle.”

Input X

Input Choice module

Write “0 - Quit program”

Write “1 - Compute area of square”

Write “2 - Compute area of circle”

Write “3 - Compute area of equilateral triangle”

Input Choice

Square module

Set Area = X ^ 2

Write “The area of a square with side ”, X

Write “ is: ”, Area

Circle module

Set Area = 3.14 * X ^ 2

Write “The area of a circle with radius ”, X

Write “ is: ”, Area

Triangle module

Set Area = (Sqrt(3) / 4) * X ^ 2

Write “The area of an equilateral triangle with side ”, X

Write “ is: ”, Area

Problem 6

Main module

Declare Income, Tax As Real

Call Input Income module

Call Compute Tax module

Call Display Tax module

End Program

Input Income module

Write “Enter your taxable income.”

Input Income

Compute Tax module

If (Income >= 0) And (Income < 50000) Then

Set Tax = 0.05 * Income

End If

If (Income >= 50000) And (Income < 100000) Then

Set Tax = 2500 + 0.07 * Income

End If

If Income >= 100000 Then

Set Tax = 6000 + 0.09 * Income

End If

Display Tax module

Write “Income: ”, Income

Write “Tax: ”, Tax

Problem 7

[See Chapter 4, Problem 7 solution]

Problem 8

[See Chapter 4, Problem 8 solution]

Chapter 4

Problem 1

Main module

Declare MySquare As Real

Write “Table of Squares”

Call Input Number module

Call Display Table module

End Program

Input Number module

Write “Enter a positive number.”

Write “The program will display the squares of”

Write “the numbers from 1 to this number and the sum of the squares.”

Input MySquare

While MySquare <= 0

Write “Enter a positive number.”

Input MySquare

End While

Display Table module

Declare K As Integer

Declare Sum As Real

Write “Number, Square”

For K = 1 Step 1 To MySquare

Write K, K ^ 2

Sum = Sum + K^2

End For

Write “The sum of the squares is “ , Sum

Problem 2

Main module

Declare Sum As Real

Declare Counter As Integer

Write “Average Age Calculator”

Call Process Ages module

Call Display Average module

End Program

Process Ages module

Declare Age As Real

Set Counter = 0

Set Sum = 0

Write “Enter an age. Enter 0 when done.”

Input Age

While Age > 0

Set Counter = Counter + 1

Set Sum = Sum + Age

End While

Display Average module

Declare Average As Real

If Counter > 0 Then

Set Average = Sum / Counter

Write “The average age is ”, Average, “ years.”

Else

Write “No ages were entered.”

End If

Problem 3

Main module

Declare N, NFactorial As Integer

Write “Factorial Calculator”

Call Input Number module

Call Compute Factorial module

Call Display Result module

End Program

Input Number module

Declare Num As Real

Repeat

Write “Enter a positive integer.”

Input Num

Until (Num > 0) And (Int(Num) = Num)

Set N = Num

Compute Factorial module

Declare Product, K As Integer

Set Product = 1

For K = 1 Step 1 Until N

Set Product = Product * K

End For

Set NFactorial = Product

Display Result module

Write N, “! = ”, NFactorial

Problem 5

Main module

Declare P As Real

Write “Bacteria Population”

Call Input Initial Number module

Call Display Table module

End Program

Input Initial Number module

Write “Enter the number of bacteria present initially.”

Input P

While P <= 0

Write “This number must be positive!”

Write “Please reenter it.”

Input P

End While

Display Table module

Declare N As Real

Declare T As Integer

Write “Day, Number”

For T = 1 Step 1 To 10

Set N = P * 2 ^ (T / 10)

Write T, N

End For

Problem 7

Main module

Declare Max As Real

Write “Largest Number Finder”

Call Find Maximum module

Call Display Maximum module

End Program

Find Maximum module

Declare Number As Real

Write “Enter a positive number. Enter 0 when done.”

Input Number

Set Max = Number

While Number > 0

If Number > Max Then

Set Max = Number

End If

Write “Enter a positive number. Enter 0 when done.”

Input Number

End While

Display Maximum module

Write “The largest number input is”

Write Maximum

Problem 8

Main module

Declare PositiveSum, NegativeSum As Real

Write “Positive/Negative Sum Calculator”

Call Find Sums module

Call Display Sums module

End Program

Find Sums module

Declare Number As Real

Set PositiveSum = 0

Set NegativeSum = 0

Write “Enter a number. Enter 0 when done.”

Input Number

While Number > 0

If Number > 0 Then

Set PositiveSum = PositiveSum + Number

Else

Set NegativeSum = NegativeSum + Number

End If

Write “Enter a number. Enter 0 when done.”

Input Number

End While

Display Sums module

Write “The sum of the positive numbers is ”, PositiveSum

Write “The sum of the negative numbers is ”, NegativeSum

Chapter 5

Problem 1

Main module

Declare Numbers[100] Of Reals

Declare Max, Min As Real

Declare Count As Integer

Write “Maximum and Minimum Values”

Call Input Numbers module

Call Find MaxMin module

Call Display MaxMin module

End Program

Input Numbers module

Declare Num As Real

Set Count = 0

Write “Enter a number. Enter 0 to quit.”

Input Num

While Num > 0

Set Numbers[Count] = Num

Set Count = Count + 1

Write “Enter a number. Enter 0 to quit.”

Input Num

End While

Find MaxMin module

Declare K As Integer

Set Max = Numbers[0]

Set Min = Numbers[0]

For K = 1 Step 1 To Count - 1

If Numbers[K] > Max Then

Set Max = Numbers[K]

End If

If Numbers[K] < Min Then

Set Min = Numbers[K]

End If

End For

Display MaxMin module

Declare K As Integer

Write “Given the numbers:”

For K = 0 Step 1 To Count - 1

Write Numbers[K]

End For

Write “The largest is ”, Max

Write “The smallest is ”, Min

Problem 2

Main module

Declare X[100] Of Reals

Declare Mean, StandardDeviation As Real

Declare Count As Integer

Write “Mean and Standard Deviation”

Call Input Numbers module

Call Compute Results module

Call Display Results module

End Program

Input Numbers module

Declare Num AS Real

Set Count = 0

Write “Enter a number. Enter 0 to quit.”

Input Num

While Num > 0

Set X[Count] = Num

Set Count = Count + 1

Write “Enter a number. Enter 0 to quit.”

Input Num

End While

Compute Results module

Declare Sum As Real

Declare K As Integer

If Count > 0

Set Sum = 0

For K = 0 Step 1 To Count - 1

Set Sum = Sum + X[K]

End For

Set Mean = Sum / Count

If Count = 1 Then

Set StandardDeviation = 0

Else

Set Sum = 0

For K = 0 Step 1 To Count - 1

Set Sum = Sum + (X[K] - Mean) ^ 2

End For

Set StandardDeviation = Sqrt(Sum / (Count - 1))

End If

End If

Display Results module

If Count = 0 Then

Write “No numbers were input.”

Else

Write “The mean is ”, Mean

Write “The standard deviation is ”, StandardDeviation

End If

Problem 4

Main module

Declare Prices[100] Of Reals

Declare Median As Real

Declare Count As Integer

Write “Median Home Price”

Call Input Prices module

Call Sort Prices module

Call Compute Median module

Call Display Median module

End Program

Input Prices module

Declare Price As Real

Set Count = 0

Write “Enter the price of a home. Enter 0 to quit.”

Input Price

While Price > 0

Set Prices[Count] = Num

Set Count = Count + 1

Write “Enter the price of a home. Enter 0 to quit.”

Input Price

End While

Sort Prices module

Declare Flag As Integer

Declare Temp As Real

Set Flag = 0

While Flag = 0

Set Flag = 1

For K = 0 Step 1 To Count - 2

If Prices[K] > Prices[K + 1] Then

Set Prices[K] = Temp

Set Prices[K] = Prices[K + 1]

Set Prices[K + 1] = Temp

Set Flag = 0

End If

End For

End While

Compute Median module

If Count/2 > Int(Count/2) Then

Set Median = Prices[(Count + 1)/2]

Else

Set Median = (Prices[Count/2] + Prices[Count/2 + 1]) / 2

End If

Display Median module

Write “The median price of the homes n Botany Bay is”

Write “$”, Median

Problem 5

Main module

Declare A[4, 4] Of Integers

Declare IsMagicSquare As Integer

Write “Test for a Magic Square”

Call Input Square module

Call Test Square module

Call Display Result module

End Program

Input Square module

Declare I, J As Integer

Write “Enter the rows of a square array; 4 numbers per row.”

For I = 0 Step 1 To 3

Write “Row”, I

For J = 0 Step 1 To 3

Write “Number”, J

Input A[I, J]

End For (I)

End For (J)

Test Square module

Declare Sum, TestSum As Integer

Declare K As Integer

Set IsMagicSquare = 1

Set Sum = A[1, 1] + A[1, 2] + A[1, 3] + A[1, 4]

For K = 2 Step 1 To 4

Set TestSum = A[K, 1] + A[K, 2] + A[K, 3] + A[K, 4]

If Sum > TestSum Then

Set IsMagicSquare = 0

End If

End For

For K = 1 Step 1 To 4

Set TestSum = A[1, K] + A[2, K] + A[3, K] + A[4, K]

If Sum > TestSum Then

Set IsMagicSquare = 0

End If

End For

Set TestSum = A[1, 1] + A[2, 2] + A[3, 3] + A[4, 4]

If Sum > TestSum Then

Set IsMagicSquare = 0

End If

Set TestSum = A[4, 1] + A[3, 2] + A[2, 3] + A[1, 4]

If Sum > TestSum Then

Set IsMagicSquare = 0

End If

Display Result module

If IsMagicSquare = 1 Then

Write “This IS a magic square.”

Else

Write “This is NOT a magic square.”

End If

Problem 6

Declare FirstName, LastName, Phone As String

Declare Customer As String

Declare Found As Integer

Write “Phone Number Finder”

Open “CUSTOMER” For Input As DataFile

Write “Enter customer’s last name.”

Input Customer

Set Found = 0

While Not EOF(DataFile) AND Found = 0

Read DataFile, LastName, FirstName, Phone

If LastName = Customer Then

Write FirstName, “ ”, LastName, “ ”, Phone

Set Found = 1

End If

End While

If Found = 0 Then

Write Customer, “ was not found.”

End If

Close DataFile

Problem 8

Main module

Declare DriverName, LicenseNumber As String

Declare NumberTickets As Integer

Declare Names[10000], Licenses[10000] Of Strings

Declare Tickets[10000] Of Integers

Declare Count As Integer

Write “Driver License Database”

Open “LICENSES” For Input As LicensesFile

Call Load Licenses File module

Call Process User Request module

Close LicensesFile

End Program

Load Licenses module

Set Count = 0

While Not EOF(LicensesFile)

Set Count = Count + 1

Read LicensesFile, Names[Count], Licenses[Count], Tickets[Count]

End While

Process User Request module

Declare Driver As String

Declare Found, Index As Integer

Declare Response As Character

Write “Do you want to enter a driver license? (Y/N)”

Input Response

While Response = “Y” Or Response = “y”

Call Input License Number module

Call Find Driver Info module

Call Display Results module

Write “Do you want to enter a driver license? (Y/N)”

Input Response

End While

Input Driver License module

Write “Enter the driver’s license number.”

Input Driver

Find Driver Info module

Set Index = 0

Set Found = 0

While Found = 0 AND Index < Count

Set Index = Index + 1

If Licenses[Index] = Driver Then

Set Found = 1

End If

End While

Display Results module

If Found = 1 Then

Write Names[Index], “ - ”, Licenses[Index]

Write “Number of tickets: ”, Tickets[Index]

Else

Write Driver, “ not found”

End If

Chapter 6

Problem 1

Declare Name As String

Write “This program creates the file GRADES with records:”

Write “ Name, Test 1 Test 2 Test 3”

Open “GRADES” For Output As GradeFile

Write “Enter a student name. Enter ZZZ when done.”

Input Name

While Name > “ZZZ”

Write GradeFile, Name, 0, 0, 0

Write “Enter a student name. Enter ZZZ when done.”

Input Name

End While

Close GradeFile

Problem 2

Declare Name As String

Declare Test1, Test2, Test3, Sum As Real

Write “This program displays the contents of the file GRADES.”

Open “GRADES” For Input As GradeFile

Write “Name, Test 1 Test 2 Test3 Total”

While Not EOF(GradeFile)

Read GradeFile, Name, Test1, Test2, Test3

Set Sum = Test1 + Test2 + Test3

Write Name, Test1, Test2, Test3, Sum