Examine the pseudocode that follows the introductory comments, then find and cor
ID: 3916516 • Letter: E
Question
Examine the pseudocode that follows the introductory comments, then find and correct all the bugs. Correct the code in this file, and be sure to clearly highlight the corrections.
Debugging
Two senior class homerooms at Littleville High School are having a fundraising drive for the prom. Each time a student solicits a contribution, a record is created with the student's name and the value. Two files have been created for Homeroom A and Homeroom B. Each file is sorted in contribution value order from highest to lowest. This program merges the two files.
_____________________________________________________________________________________
start
Declarations
string roomAName
num roomAValue
string roomBName
num roomBValue
string bothFilesDone = "N"
num HIGH_VALUE = 999999
InputFile roomAFile
InputFile roomBFile
InputFile mergedFile
getReady()
while bothFilesDone = "N"
detailLoop()
endwhile
allDone()
stop
getReady()
open roomAFile "roomAFile.dat"
open roomBFile "roomBFile.dat"
open mergedFile "mergedFile.dat"
readA()
readB()
checkBoth()
return
readA()
input roomAName, roomAValue from roomAFile
if eof then
roomAValue = HIGH_VALUE
endif
return
readB()
input roomBName, roomBValue from roomBFile
if eof then
roomBValue = HIGH_VALUE
endif
return
checkBoth()
if roomAValue = HIGH_VALUE AND roomBValue = HIGH_VALUE then
bothFilesDone = "Y"
endif
return
detailLoop()
if roomAValue > roomBValue then
output roomBName, roomBValue to mergedFile
readA()
else
output roomAName, roomAValue to mergedFile
readB()
endif
return
allDone()
close roomAFile
close roomBFile
close mergeFile
return
Explanation / Answer
The two files are sorted from highest to lowest so the merged file will
also have that order.
In that case the logic in detaiLoop is not ok
---------------------orignal code----------------------
detailLoop()
if roomAValue > roomBValue then
output roomBName, roomBValue to mergedFile
readA()
else
output roomAName, roomAValue to mergedFile
readB()
endif
return
---------------------orignal code----------------------
In this case the lower value is getting written to the file and the index in
higher value file is incremented . The actual thing is we should be writing
the higher value and increment the index in that file. Also end of the file
needs to be taken care of. If fileA ends then fileB will be just copied and
if fileB gets finished, then fileA just needs to be copied. Also checkBoth needs
to be called to check the end of the file.
---------------------modified code----------------------
detailLoop()
if roomAValue == HIGH_VALUE then
output roomBName, roomBValue to mergedFile
readB()
else
if roomBValue == HIGH_VALUE then
output roomAName, roomAValue to mergedFile
readA()
else
if roomAValue > roomBValue then
output roomAName, roomAValue to mergedFile
readA()
else
output roomBName, roomBValue to mergedFile
readB()
endif
endif
endif
checkBoth()
---------------------modified code----------------------
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.