DEBUGGING
// The 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"
string HIGHVALUE = "XXXXX"
InputFile roomAFile
InputFile roomBFile
OutputFile mergedFile
getReady()
while bothFilesDone = "N"
detailLoop()
endwhile
allDone()
stop
getReady()
open roomAFile "roomAFile.dat"
open roomBFile "roomBFile.dat"
open mergedFile "mergedFile.dat"
readA()
readA()
checkBoth()
return
readA()
input roomAName, roomAValue from roomAFile
if eof then
roomAValue = HIGHVALUE
endif
return
readB()
input roomBName, roomBValue from roomBFile
if eof then
roomBValue = roomAValue
endif
return
checkBoth()
if roomAValue = HIGHVALUE AND roomAValue = HIGHVALUE then
bothFilesDone = "Y"
endif
return
detailLoop()
if roomAName > roomBName then
output roomBName, roomBValue to mergedFile
readB()
else
output roomAName, roomAValue to mergedFile
readA()
endif
checkBoth()
return
allDone()
close roomAFile
close roomBFile
close mergedFile
return
2 answers
(a) fix any syntax errors
(b) step through the execution if your output is wrong.
detailLoop() need to consider what happens if you come to the end of one file before its room?Name is greater than that of the other. Avoiding an infinite loop would be a good idea.