Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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----------------------

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote