Question
When the user input all $5 for 3 coupons. The total charge is wrong. need help with the fix PLEASE. .data str: .asciiz Please
When the user input all $5 for 3 coupons. The total charge is wrong. need help with the fix PLEASE.
.data str: .asciiz " Please enter the number of items you are purchasing (should be less than or equal to 20): " str1: .asciiz " Sorry too many items to purchase! Please enter number of items you are purchasing" str2: .asciiz " Please enter the price of item " str3: .asciiz " Please enter the number of coupons that you want to use. " str4: .asciiz " Too many coupons! Please enter the number of coupons that you want to use." str5: .asciiz " Please enter the amount of coupon " str6: .asciiz " This coupon is not acceptable" str7: .asciiz " Your total charge is: $" str8: .asciiz " Thank you for shopping with us." str9: .asciiz ":\t"
priArr: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 couArr: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .text
main: li $t1, 20 #input can't be greater than 20 items li $t2, 1 #item counter (starting at 1) li $t3, 0 #loop counter li $t5, 10 #loads 10 into t5 la $s0, priArr #loads address of Price Array to $s0 la $s1, couArr #loads address of Coupon Array to $s1 li $v0, 4 #asks for input la $a0, str syscall
li $v0, 5 #load integer syscall
add $s3, $0, $v0 #adds input to $s3 bgt $s3, $t1, error1 ble $s3 0, error1 #if $s3 > $t1 --> error1 add $a1, $s3, $0 #adds input to $a1 (limit)
jal FillPriceArray #jumps to subroutine to fill array with prices add $s2, $0, $v1 #adds price sum to s2
la $s0, priArr #points pointer to first location of arr1 li $v0, 4 #asks for how many coupons la $a0, str3 syscall
li $v0, 5 #loads integer into $v0 syscall
bgt $v0, $s3, error2 #if input > limit, go to error add $t4, $v0, 0 #adds input to t4 add $a3, $t4, $0 #adds input to a3
jal FillCouponArray #jumps to subroutine to fill array with coupon add $s5, $v1, $0 #adds coupon input to s5 sub $t7, $s2, $s5 #subtracts price sum and coupons and puts it into t7
li $v0, 4 #prints output la $a0, str7 syscall
li $v0, 1 #prints dollar amount add $a0, $t7, $0 syscall li $v0, 4 #prints content la $a0, str8 syscall
exit: li $v0, 10 syscall
FillPriceArray: li $t0, 10 #adds limit($a1) to $t0 li $t1, 1 #adds counter to $t1 li $t2, 0 #adds loop counter to $t2 add $t3, $a1, $0 #adds input to t3
read: beq $t3, $t2, end #if $a1 (counter) = $t2 , return to the previous address in main li $v0, 4 #asks for price of item la $a0, str2 syscall
li $v0, 1 #prints counter add $a0, $t1, $0 syscall
li $v0, 4 #prints colon and tab la $a0, str9 syscall
li $v0, 5 #loads integer into $v0 syscall sw $v0, 0($s0) #stores the integer into array1 add $t1, $t1, 1 #adds 1 to counter add $t2, $t2, 1 #adds 1 to loop counter add $s0, $s0, 4 #increments array add $t4, $t4, $v0 #adds number to sum j read end: add $v1, $t4, $0 jr $ra
FillCouponArray: li $t0, 10 #adds 10 into t0 li $t1, 1 #adds counter to $t1 li $t2, 0 #adds loop counter to $t2 add $t4, $a3, $0 #adds coupon input to t4
read1: beq $t4, $t2, end1 #beg of loop lw $v0, 0($s0) #stores word from price array into $v0 // might have to move outside loop add $t5, $0, $v0 #stores price into $t5 li $v0, 4 #outputs please enter amount of coupon la $a0, str5 syscall
li $v0, 1 #prints counter add $a0, $t1, $0 syscall li $v0, 4 #prints colon and tab la $a0, str9 syscall
li $v0, 5 #loads integer into $v0 syscall add $t3, $v0, $0 #adds input to t3 bgt $t3, $t0, error3 #if input is > 10, go to error\ bgt $t3, $t5, error3 #if input is > price number sw $t3, 0($s1) #stores the integer into array1 add $t3, $t3, $v0 #adds number to sum
increment: add $t1, $t1, 1 #adds 1 to counter add $t2, $t2, 1 #adds 1 to loop counter add $s0, $s0, 4 #increments array add $s1, $s1, 4 #increments array 2 j read1 end1: add $v1, $t3, $0 #adds coupon sum to v2 jr $ra #returns back to addresss
error1: li $v0, 4 #outputs too many items to purchase la $a0, str1 syscall j main
error2: li $v0, 4 #outputs too many coupons la $a0, str4 syscall jr $ra
error3: li $v0, 4 #outputs coupon is not acceptable la $a0, str6 syscall sw $0, 0($s1) j increment
Sample Output:
Please enter the number of item you are purchasing(should be less than or equal to 20)
21
Sorry too many items to purchase!! Please enter number of items you are purchasing
3
Please enter the price of item 1
10
Please enter the price of item 2
10
Please enter the price of item 3
20
Please enter the number of coupons that you want to use.
4
Too many Coupons!! Please enter the number of coupons that you want to use.
3
Please enter the amount of coupon 1
15
This coupon is not acceptable
Please enter the amount of coupon 2
$5
Please enter the amount of coupon 3
$5
Your total charge is: $30
Thank you for shopping with us.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started