Use the inventoryNew.txt as input file to build a Max-Heap (java PriorityQueue).
ID: 3813113 • Letter: U
Question
Use the inventoryNew.txt as input file to build a Max-Heap (java PriorityQueue). The order of the priority queue is the reverse order of part number. At the end, print the Max-Heap in iterator order and then print the same Max-Heap in priority queue order.
Download Inventory.java and inventoryNew.txt
inventory.java
//********************************************************************
// Inventory.java
//
//********************************************************************
public class Inventory
{
protected String PartNo;
protected String Model;
protected String Description;
protected Double ListPrice;
//-----------------------------------------------------------------
// Constructor: Sets up this inventory using the specified
// information.
//-----------------------------------------------------------------
public Inventory() {
}
public String GetPartNo()
{
return PartNo;
}
public void SetInventory (String ePartNo, String eModel, String eDescription, Double eListPrice)
{
PartNo = ePartNo;
Model = eModel;
Description = eDescription;
ListPrice = eListPrice;
}
//-----------------------------------------------------------------
// Returns a string including the basic inventory information.
//-----------------------------------------------------------------
public String toString()
{
String result = null;
if (PartNo != null)
{
result = "Part Number: " + PartNo + " ";
result += "Model: " + Model + " ";
result += "List Price: "+ Double.toString(ListPrice) + " ";
result += "Description: " + Description + " ";
}
return result;
}
//-----------------------------------------------------------------
//
//-----------------------------------------------------------------
public String getPartNo()
{
return PartNo;
}
public String getModel()
{
return Model;
}
public String getDesc()
{
return Description;
}
public double getListPrice()
{
return ListPrice;
}
}
inventoryNew.txt
GT12C1068A,YUKON XL,07-14 GMC YUKON XL RT Front fender brace Lower Bracket Hinge,24.00
NI27E1251B,ALTIMA SDN,13-15 NISSAN ALTIMA SDN RT Front fender liner From 10-12 (CAPA),63.00
NI23H1297A,ALTIMA SDN,13-15 NISSAN ALTIMA SDN LT Front fender liner From 10-12 (CAPA),48.00
CV15F1067A,SILVERADO 1500 (NEW),07-13 CHEVY SILVERADO 1500 LT Front fender brace Lower Bracket Hinge,23.00
HY07E1288A,SONATA,15-16 HYUNDAI SONATA Front bumper cover 2.4L Std Type w/o Park Assist prime (CAPA),326.00
CV20B1225B,SILVERADO 1500 HYBRID,09-13 CHEVY SILVERADO 1500 HYBRID LT Front fender brace Lower Bracket Hinge,23.00
CV39A1251A,AVALANCHE,07-13 CHEVY AVALANCHE RT Front fender brace Lower Bracket Hinge,24.00
CV39A1250A,SUBURBAN,07-14 CHEVY SUBURBAN RT Front fender brace Lower Bracket Hinge,24.00
AC12C1250AQ,MDX,07-13 ACURA MDX LT Front fender liner (CAPA),68.00
AC12C1251AQ,MDX,07-13 ACURA MDX RT Front fender liner (CAPA),68.00
Explanation / Answer
.data
# const string for welcome
welc: .asciiz "Welcome to SPIM Calculator one.0! "
p_int: .asciiz " Please offer associate integer: "
p_op: .asciiz " Please offer associate operator: "
i_err: .asciiz " Input Incorrect, unhealthy operator! "
again_str: .asciiz "Another calculation? (y/n)"
rmndr: .asciiz " r: "
new_line: .asciiz " "
int1: .word one # house to carry int one
int2: .word one # house to carry int a pair of
raw_in: .space one # house to carry raw input
op: .space one # house to carry operator char
a_char: .space one # house to carry once more char
out: .word one # house to carry output
remain: .word one # house to carry remainder
#operator constants
c_plus: .ascii "+" # const for +
c_min: .asciiz "-" # const for -
c_mult: .asciiz "*" # const for *
c_divi: .asciiz "/" # const for /
c_eq: .asciiz "=" # const for =
c_no: .asciiz "n" # const for n
.text
.globl main
main: li $v0, four # syscall four, print string
la $a0, welc # offer argument: string
syscall # really print string
calc: la $t6, stay # load remainder variable
move $t6, $zero # store zero in remainder (reset)
li $v0, four # syscall four, print string
la $a0, purpose # offer argument: string
syscall # really print string
li $v0, five # tell syscall we would like to scan int one
syscall # really scan in int one
la $s1, int1 # load int1 into $s1
move $s1, $v0 # copy the number from $v0 to int1
li $v0, four # syscall four, print string
la $a0, purpose # offer argument: string
syscall # really print string
li $v0, five # tell syscall we would like to scan int a pair of
syscall # really scan in int a pair of
la $s2, int2 # offer $s2 the address to carry int a pair of
move $s2, $v0 # copy the number from $v0 to $s2
li $v0, four # syscall four, print string
la $a0, p_op # offer argument: string
syscall # really print string
li $v0, eight # tell syscall we would like to scan operator
la $a0, op # offer $a0 the address to carry the operator
syscall # really scan in operator
lb $t0, op # load the primary computer memory unit of op
li $t1, '+' # load const for and
li $t2, '-' # load const for minus
li $t3, '*' # load const for multiplying
li $t4, '/' # load const for dividing
la $s0, out # load bent $s0
beq $t0, $t1, and # we're adding
beq $t0, $t2, minus # we're subtracting
beq $t0, $t3, multi # we're multiplying
beq $t0, $t4, divi # we're dividing
# else
j error # incorrect input
plus: add $s0, $s1, $s2 # add our ints, store in $t0
j print
minus: sub $s0, $s1, $s2 # compute our ints, store in $t0
j print
multi: slt $t1, $t2, $s2 # if our counter is a smaller amount than int2, set $t1 to one
beq $t1, $zero, print # if we've reached int2, we're done
add $s0, $s1, $s1 # add int1 and int1, store in out
j multi # loop
divi: la $t0 stay # load remainder into $t0
move $t0, $s1 # set remainder to dividend
add $s0, $zero, $zero # commenced to zero, simply just in case
loop: slt $t1, $t0, $s2 # if remainder is a smaller amount than divisor, set 1
beq $t1, $zero, print # if we're done branch to done
sub $t0, $t0, $s2 # sub divisor from remainder, store in remainder
addi $s0, $s0, one # increment quotient by one
j loop # loop
print: li $v0, one # tell syscall we would like to print int
la $a0, int1 # offer syscall int1 to print
syscall # really print int
li $v0, four # tell syscall we would like to print string
lb $a0, op # tell syscall we would like to print operator
syscall # really print string
li $v0, one # tell syscall we would like to print int
la $a0, int2 # offer syscall int2 to print
syscall # really print int
li $v0, four # tell syscall we would like to print string
la $a0, c_eq # tell syscall we would like to print operator
syscall # really print string
li $v0, one # tell syscall we would like to print number
la $a0, out # offer syscall our output
syscall # really print int
la $t0, stay # load remainder
beq $t0, $zero, once more # if we've no remainder, end printing
li $v0, four # tell syscall we would like to print string
la $a0, rmndr # tell syscall we would like to print remainder string
syscall # print "r: "
li $v0, one # tell syscall we would like to print int
la $a0, stay # offer syscall our remainder to print
syscall # print remainder
again: li $v0, four # tell syscall we would like to print string
la $a0, printing operation # tell syscall to print printing operation
syscall
la $a0, once more_str # load prompt for again string for syscall
syscall
li $v0, eight # tell syscall we would like to scan string
la $a0, a_char # tell syscall to place it in $a0
syscall
lb $t0, a_char
li $t1, 'n' # get n char therefore we will compare
beq $t0, $t1, exit # if we have a tendency to square measure done, exit
#else loop
j calc # jump to starting
error: li $v0, four # tell syscall we would like to print string
la $a0, i_err # offer syscall what to print
syscall # really print
j once more # head to prompt for rehear
exit: li $v0, ten # exit code
syscall #exit!
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.