You are asked to write a simple C program that will accept an integer value in the range of 5-95 with values being in multiples of 5 representing the number of cents to give to a customer in their change. A negative number input will signal the exit/termination of the program. The program should calculate how many coins of each denomination and display this to the user. Valid coin values are 50, 20, 10 and 5. The program should aim to give as much of the higher valued coins as possible. A poor solution for an input of 30 cents is to give six 5 cent coins. A better solution is to give a 20 cent coin and a 10 cent coin. Your solution (program and algorithm) should be modular in nature. This requires the submission of a structure chart and a high-level algorithm and suitable decompositions of each step. Note that for this problem, the principle of code reuse is particularly important and a significant number of marks are allocated to this.  You should attempt to design your solution such that it consists of a relatively small number of functions that are as general in design as possible and you should have one function in particular that can be reused (called repeatedly) in order to solve the majority of the problem.  If you find that you have developed a large number of functions (code modules) where each perform a similar task (or have a lot of code that is repeated in the functions) then attempt to analyse your design to generalise the logic so that you have just one general version of the function (module). Be mindful of the cohesion exhibited by the function (module). So if you have a function (module) that is doing more than one task, then cohesion is low, and, you will need to redesign to have high cohesion.

Question
Asked Oct 11, 2019

You are asked to write a simple C program that will accept an integer value in the range of 5-95 with values being in multiples of 5 representing the number of cents to give to a customer in their change. A negative number input will signal the exit/termination of the program. The program should calculate how many coins of each denomination and display this to the user. Valid coin values are 50, 20, 10 and 5. The program should aim to give as much of the higher valued coins as possible. A poor solution for an input of 30 cents is to give six 5 cent coins. A better solution is to give a 20 cent coin and a 10 cent coin. Your solution (program and algorithm) should be modular in nature. This requires the submission of a structure chart and a high-level algorithm and suitable decompositions of each step.

 

Note that for this problem, the principle of code reuse is particularly important and a significant number of marks are allocated to this.  You should attempt to design your solution such that it consists of a relatively small number of functions that are as general in design as possible and you should have one function in particular that can be reused (called repeatedly) in order to solve the majority of the problem.  If you find that you have developed a large number of functions (code modules) where each perform a similar task (or have a lot of code that is repeated in the functions) then attempt to analyse your design to generalise the logic so that you have just one general version of the function (module).

 

Be mindful of the cohesion exhibited by the function (module). So if you have a function (module) that is doing more than one task, then cohesion is low, and, you will need to redesign to have high cohesion.

check_circleExpert Solution
Step 1

Each functionality defined in relatively small number of functions to one function that can be reused in order to solve most of the problem.

The functionality of each function defines in comments.

Step 2

Program code:

/* included header files */

#include <stdio.h>

#include<stdlib.h>

/* funtion for taking user unput */

int GetInput()

{

    int num;

    printf("\nEnter an integer value for the number of cents to give to a customer in their change: ");

    scanf("%d", &num);

    return (num);

}

/* function to check for negative number */

void negative(int userinput)

{

    if(userinput<0)

    {

        printf("The exit/termination of the program.");

        exit(0);

    }

   

}

/* funtion for varifing user unput */

void checkinput(int *userinput)

{

    if ((*userinput < 5) || (*userinput > 95) || (*userinput%5 > 0))

    {

        printf("An integer value should be in the range of 5-95 with values being in multiples of 5.\n");

        *userinput = GetInput();

        negative(*userinput);

    }

}

/* function for Calculate coin denominations */

void Change (int *userinput, int *fifty, int *twenty, int *ten, int *five)

{

    int number = *userinput;

    *fifty = number/50;

    number =number%50;

    *twenty = number/20;

    number =number% 20;

    *ten = number/10;

    number =number%10;

    *five = number/5;

    number =number%5;

    return;

}

/* Display function */

void Display (int *userinput, int *fifty, int *twenty, int *ten, int *five)

{

    printf("%d of cents to give to a customer in their change: \n", *userinput);

        if (*fifty > 1)

            printf(" Fifty cent: %d\n", *fifty);

        if (*fifty == 1)

        &...

Want to see the full answer?

See Solution

Check out a sample Q&A here.

Want to see this answer and more?

Solutions are written by subject experts who are available 24/7. Questions are typically answered within 1 hour*

See Solution
*Response times may vary by subject and question
Tagged in

Engineering

Computer Science

Programing Language

Related Computer Science Q&A

Find answers to questions asked by student like you

Show more Q&A add
question_answer

Q: Think Critically 3-1: Configuring Zones You have an Active Directory forest named csmtech.local and ...

A: Setting up of DNS server and zones to handle the given situation:Consider the following 2 scenarios ...

question_answer

Q: Using the gate diagram below, create an equivalent Boolean equation along with a truth table.Simplif...

A: As given in the gate diagram,there are following gates are used:NOT gateAND gateOR gateXOR gateYou c...

question_answer

Q: I am having trouble writing a python program that opens a file that contains baby names. One file fo...

A: To run this code, make all the files Boys.txt, Girls.txt and .py files in same folder.input() is use...

question_answer

Q: What is a hot spot and what are the benefits and cons?

A: Hotspot:A physical location that can obtain an internet access using Wireless Fidelity (Wi-Fi) is ca...

question_answer

Q: Beacon frames in the frequency hopping spread spectrum variant of 802.11 contain the dwell time. Do ...

A: NO,  as we know the Bluetooth frame has dwell time of 625p sec for basic data rate in the frame its ...

question_answer

Q: Please explain, as simplistically (but thoroughly) as possible, how to develop a k-map from a truth ...

A: Rules to be followed to simplify the Boolean expression are given below-

question_answer

Q: Which of the following is not included in a ScreenTip for command? a. Link to a help topic on the co...

A: ScreenTip:ScreenTip is a User Interface feature.It is a small popup window appears while the mouse c...

question_answer

Q: Write the code to assign the value 10 to an variable named a

A: The Java code is given below to assign the value 10 to a variable named ‘a’. There are two ways to a...

question_answer

Q: please solve this in python  //////////////// ////////////////   ////////////////   ////////////////

A: Program Instructions:Create three functions namely top(), body() and word() to print the different p...