Computer Science, asked by ashishmishra27754, 10 months ago

Have you seen your father using his ATM card at the bank's ATM machine? Can you write an algo for taking out money from a Bank's ATM machine?​

Answers

Answered by priyanshisushree
2

Answer:

An ATM, a.k.a. Cash Withdrawal Machine, uses a computer program to interact with the customer and count the number of banknotes to dispense based on the customer’s requested amount.

In the UK, ATM’s tend to only stock £20 banknotes and £10 banknotes and apply the following rules:

The minimal amount that can be withdrawn is £10,

The maximal amount that can be withdrawn is £200,

The amount to be withdrawn must be a multiple of 10 e.g. £10, £20, £30, £40, … £180, £190, £200.

Quotient (DIV) and Remainder (MOD)

To calculate how many £20 banknotes and how many £10 banknotes correspond to the requested amount, the ATM program uses two arithmetic operators called DIV and MOD.

The quotient (DIV) returns the result of the whole division. For instance:

70 DIV 20 = 3

The remainder (MOD) returns the remainder of the whole division. For instance:

70 MOD 20 = 10

By using these operators we can deduct that £70 pounds will result in:

70 DIV 20 = 3 banknotes of £20

70 MOD 20 = 10 (= 1 banknote of £10)

Note that in Python the DIV operator is // whereas the MOD operator is %.

For instance:

quotient = 70 // 20

remainder = 70 % 20

Also to find out if a number is a multiple of 10, we can check if number MOD 10 == 0. Effectively, if the remainder of dividing this number by 10 is null, we can conclude that this number is a multiple of 10.

ATM Algorithm: Pseudocode

The suggested pseudocode for our ATM is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

WHILE TRUE

   DISPLAY "Welcome to Python Bank ATM - Cash Withdrawal"

   amount = INPUT "How much would you like to withdraw today?"

   IF (amount MOD 10) != 0 THEN

      DISPLAY "You can only withdraw a multiple of ten!"

   ELSE

      IF amount<10 OR amount>200 THEN

         DISPLAY "You can only withdraw between £10 and £200"

      ELSE

         notes20 = amount DIV 20

         notes10 = (amount MOD 20) / 10

         DISPLAY "Collect your money: "

         DISPLAY "    >> £20 Banknotes: " + notes20

         DISPLAY "    >> £10 Banknotes: " + notes10

         DISPLAY "Thank you for using this Python Bank ATM."

         DISPLAY "Good Bye."

      END IF

   END IF

END WHILE

Your task is to use this pseudocode to implement this algorithm using Python.

Extension Task 1

The bank reloads the ATM to its full capacity every morning. The ATM has a full capacity of £1,000.

Adapt this code so that:

When you run the code, the ATM starts with a full capacity of £1,000.

After each withdrawal, take away the amount withdrawn from the ATM total capacity.

If the ATM is empty a message is displayed to inform that the ATM is not operational.

If the ATM is not empty, change your code to check that it contains enough cash left to meet the amount requested by a customer before dispensing the banknotes.

If the customer requested amount cannot be met, inform the customer of the maximum amount that is still available to withdraw.

Extension Task 2

When the bank reloads the ATM, it ensures that the ATM contains exactly:

30 banknotes of £20.

40 banknotes of £10.

Adapt your code to ensure that the ATM checks that there are enough banknotes of £20 or £10 before dispensing the banknotes. Note that if the ATM runs out of £20 banknotes, it may still be able to dispense the requested amount using £10 banknotes instead.

Similar questions