61 lines
1.6 KiB
QBasic
61 lines
1.6 KiB
QBasic
DIM Amount(1 TO 100)
|
|
CONST FALSE = 0, TRUE = NOT FALSE
|
|
|
|
' Get account's starting balance:
|
|
CLS
|
|
INPUT "Type starting balance, then press <ENTER>: ", Balance
|
|
|
|
' Get transactions. Continue accepting input until the
|
|
' input is zero for a transaction, or until 100
|
|
' transactions have been entered:
|
|
FOR TransacNum% = 1 TO 100
|
|
PRINT TransacNum%;
|
|
PRINT ") Enter transaction amount (0 to end): ";
|
|
INPUT "", Amount(TransacNum%)
|
|
IF Amount(TransacNum%) = 0 THEN
|
|
TransacNum% = TransacNum% - 1
|
|
EXIT FOR
|
|
END IF
|
|
NEXT
|
|
|
|
' Sort transactions in ascending order,
|
|
' using a "bubble sort":
|
|
Limit% = TransacNum%
|
|
DO
|
|
Swaps% = FALSE
|
|
FOR I% = 1 TO (Limit% - 1)
|
|
|
|
' If two adjacent elements are out of order, switch
|
|
' those elements:
|
|
IF Amount(I%) < Amount(I% + 1) THEN
|
|
SWAP Amount(I%), Amount(I% + 1)
|
|
Swaps% = I%
|
|
END IF
|
|
NEXT I%
|
|
|
|
' Sort on next pass only to where the last switch was made:
|
|
IF Swaps% THEN Limit% = Swaps%
|
|
|
|
' Sort until no elements are exchanged:
|
|
LOOP WHILE Swaps%
|
|
|
|
' Print the sorted transaction array. If a transaction
|
|
' is greater than zero, print it as a "CREDIT"; if a
|
|
' transaction is less than zero, print it as a "DEBIT":
|
|
FOR I% = 1 TO TransacNum%
|
|
IF Amount(I%) > 0 THEN
|
|
PRINT USING "CREDIT: $$#####.##"; Amount(I%)
|
|
ELSEIF Amount(I%) < 0 THEN
|
|
PRINT USING "DEBIT: $$#####.##"; Amount(I%)
|
|
END IF
|
|
|
|
' Update balance:
|
|
Balance = Balance + Amount(I%)
|
|
NEXT I%
|
|
|
|
' Print the final balance:
|
|
PRINT
|
|
PRINT "--------------------------"
|
|
PRINT USING "Final Total: $$######.##"; Balance
|
|
END
|