
- Include required library files.
- Define a class named “NegativeAmount” and “InsufficientFunds”.
- Inside the “Account” class,
- Add the negative amount exception in the “deposit()” function.
- Add the negative amount and insufficient funds exception in the “withdraw()” function.
- Define a “main()” function to test the program to deposit and withdraw amounts.
- Create an object and test the deposit and withdraw using the appropriate function.
- Then print the result.
- Add the negative amount exception in the “deposit()” function.
- Add the negative amount and insufficient funds exception in the “withdraw()” function.
- Create an object and test the deposit and withdraw using the appropriate function.
- Then print the result.

Program to rewrite the given class “Account” that throws an appropriate exceptions and test the program to deposit and withdraw amounts are as follows,
Explanation of Solution
// Include required library files
#include <iostream>
using namespace std;
// Definition of class NegativeAmount
class NegativeAmount
{
};
// Definition of class insufficientFunds
class InsufficientFunds
{
};
// Definition of class Account
class Account
{
// Access specifier
private:
// Declaration of double variable
double balance;
// Access specifier
public:
// Definition of default constructor
Account()
{
// Assign 0 to balance
balance = 0;
}
// Definition of constructor to assign value
Account(double initialDeposit)
{
// Assign initialDeposit to balance
balance = initialDeposit;
}
// Definition of getBalance() function to return balance
double getBalance()
{
// Return balance
return balance;
}
// Definition of deposit() function to return new balance
// or throw NegativeAmount exception
double deposit(double amount) throw (NegativeAmount)
{
// Check amount is greater than 0
if (amount > 0)
// Condition is trur, compute balance
balance += amount;
// Otherwise
else
// Throw exception
throw NegativeAmount();
// Return balance
return balance;
}
// Definition of withdraw function to return new balance
// or throw NegativeAmount or InsufficientFunds
double withdraw(double amount) throw (NegativeAmount,
InsufficientFunds)
{
// Check amount is greater than balance
if (amount > balance)
// Throw insufficient exception
throw InsufficientFunds();
// Otherwise check amount is lesser than 0
else if (amount < 0)
// Throw negative amount execption
throw NegativeAmount();
// Otherwise
else
// Compute balance
balance -= amount;
// Return balance
return balance;
}
};
// Definition of main() function
int main()
{
// Creation of object and passing 100 to the constructor
Account a(100);
// Try block
try
{
// Call deposit() function to deposit 50
a.deposit(50);
// Call deposit() function to deposit 10
a.deposit(10);
// Call withdraw() function to deposit 220
a.withdraw(220);
// Call getBalance() function to get print balance amount
cout << a.getBalance() << endl;
}
// Catch block for negative amount
catch (NegativeAmount)
{
// Print the message regarding negative amount
cout << "You can't deposit or withdraw a negative amount."
<< endl;
}
// Catch block for insufficient funds
catch (InsufficientFunds)
{
// Print the message for insufficient funds
cout << "Insufficient funds for withdrawal." << endl;
}
// Declaration of character variable
char ch;
// Get an character
cin >> ch;
// Return 0
return 0;
}
Output:
Insufficient funds for withdrawal.
Want to see more full solutions like this?
Chapter 16 Solutions
Problem Solving with C++ plus MyProgrammingLab with Pearson eText-- Access Card Package (9th Edition)
- ▼ description: answer: question2: ▼ description: answer: "What are the offset ranges for the book file content within book.img?" "YOUR ANSWER GOES HERE" "What are the offset ranges for the content in unused space within floppy.img?" "YOUR ANSWER GOES HERE"arrow_forwardTask 3: Creating a Sample Hard Drive Image book.img Add a new (virtual) hard drive of capacity 2GiB to your Kali Linux VM. Create a FAT filesystem on the hard drive using mkfs. fat. Be careful to use your new 2GiB drive! It would be a good idea to use 1sblk to verify the block device name before proceeding. Mount the new hard drive at a mount point of your choice. Find a book from Project Gutenberg by an author whose last name begins with the same letter as your last name (look under "Browsing Options" and then "Authors" A-Z). Download the plain text UTF-8 and ensure it is saved into your mounted drive (it should be saved within the mount point directory). For example, using The Royal Guide to Wax Flower Modelling by Emma Peachey (a cracking read, no doubt) we can download the plain text file using:arrow_forward- Is FD A a partial or transitive dependency?- Is FD B a partial or transitive dependency?- Is FD C a partial or transitive dependency?- In what normal form is the relation Parking Tables?- Convert the relation Parking Tables to a set of 3NF relations.arrow_forward
- What happens to MAC addresses as frames travel from one node (device) to another? What happens to MAC addresses as frames travel from one network to another? What happens to IP addresses as packets travel from one node (device) to another? What happens to IP addresses as packets travel from one network to another?arrow_forwardCan you check if my explation is correct: Challenge: Assume that the assigned network addresses are correct. Can you deduce (guess) what the network subnet masks are? Explain while providing subnet mask bits for each subnet mask. [Hint: Look at the addresses in binary and consider the host ids] To assume that the network addresses are correct, we take a look at the network ID and IP addresses. Take 20.0.0.0/8, we have an /8 prefix which is Class A, that provide us with 255.0.0.0. This means that there are 24 host bits while the network bits are 8. When compared to the IP address 20.255.0.7, we can perform an additional operation with the subnet mask giving us 20.0.0.0. The same happened with 20.0.0.89, which we also got 20.0.0.0. Therefore, these two IP addresses fall within the respective /8 subnet. For 200.100.10.0/30, the /30 is Class C with a subnet mask of 255.255.255.252, meaning 30 network bits and only two host bits. When applying the subnet mask and the IP addresses…arrow_forwardIt is possible to sort an array of n values using pipeline of n filter processes.The first process inputs all the values one at a time, keep the minimum, and passes the others on to the next process. Each filter does the same thing; it receives a stream of values from the previous process, keep the smallest, and passes the others to the next process. Assume each process has local storage for only two values--- the next input value and the minimum it has seen so far. (a) Developcode for filter processes. Declare the channels and use asynchronous message passing. Hint:Define an array of channels value[n] (int), and a set of filter processes Filter[i = 0 ton-1]. Each process Filter[i] (where 0 <= i <= n-2) receives a stream of integers through channelvalue[i], keeps the smallest, and sends all other integers to channel value[i+1]. The last processFilter[n-1] receives only one integer through channel value[n-1] and does not need to send anyinteger further.arrow_forward
- It is possible to sort an array of n values using pipeline of n filter processes.The first process inputs all the values one at a time, keep the minimum, and passes the others on to the next process. Each filter does the same thing; it receives a stream of values from the previous process, keep the smallest, and passes the others to the next process. Assume each process has local storage for only two values--- the next input value and the minimum it has seen so far. (a) Developcode for filter processes. Declare the channels and use asynchronous message passing. Hint:Define an array of channels value[n] (int), and a set of filter processes Filter[i = 0 ton-1]. Each process Filter[i] (where 0 <= i <= n-2) receives a stream of integers through channelvalue[i], keeps the smallest, and sends all other integers to channel value[i+1]. The last processFilter[n-1] receives only one integer through channel value[n-1] and does not need to send anyinteger further.arrow_forwardIt is possible to sort an array of n values using pipeline of n filter processes.The first process inputs all the values one at a time, keep the minimum, and passes the others on to the next process. Each filter does the same thing; it receives a stream of values from the previous process, keep the smallest, and passes the others to the next process. Assume each process has local storage for only two values--- the next input value and the minimum it has seen so far. (a) Developcode for filter processes. Declare the channels and use asynchronous message passing. Hint:Define an array of channels value[n] (int), and a set of filter processes Filter[i = 0 ton-1]. Each process Filter[i] (where 0 <= i <= n-2) receives a stream of integers through channelvalue[i], keeps the smallest, and sends all other integers to channel value[i+1]. The last processFilter[n-1] receives only one integer through channel value[n-1] and does not need to send anyinteger further.arrow_forwardIt is possible to sort an array of n values using pipeline of n filter processes.The first process inputs all the values one at a time, keep the minimum, and passes the others on to the next process. Each filter does the same thing; it receives a stream of values from the previous process, keep the smallest, and passes the others to the next process. Assume each process has local storage for only two values--- the next input value and the minimum it has seen so far. (a) Developcode for filter processes. Declare the channels and use asynchronous message passing. Hint:Define an array of channels value[n] (int), and a set of filter processes Filter[i = 0 ton-1]. Each process Filter[i] (where 0 <= i <= n-2) receives a stream of integers through channelvalue[i], keeps the smallest, and sends all other integers to channel value[i+1]. The last processFilter[n-1] receives only one integer through channel value[n-1] and does not need to send anyinteger further.arrow_forward
- It is possible to sort an array of n values using pipeline of n filter processes.The first process inputs all the values one at a time, keep the minimum, and passes the others on to the next process. Each filter does the same thing; it receives a stream of values from the previous process, keep the smallest, and passes the others to the next process. Assume each process has local storage for only two values--- the next input value and the minimum it has seen so far. (a) Developcode for filter processes. Declare the channels and use asynchronous message passing. Hint:Define an array of channels value[n] (int), and a set of filter processes Filter[i = 0 ton-1]. Each process Filter[i] (where 0 <= i <= n-2) receives a stream of integers through channelvalue[i], keeps the smallest, and sends all other integers to channel value[i+1]. The last processFilter[n-1] receives only one integer through channel value[n-1] and does not need to send anyinteger further.arrow_forwardI need help: Challenge: Assume that the assigned network addresses are correct. Can you deduce (guess) what the network subnet masks are? Explain while providing subnet mask bits for each subnet mask. [Hint: Look at the addresses in binary and consider the host ids]arrow_forwardI would like to know if my answer statment is correct? My answer: The main difference is how routes are created and maintained across different networks. Static routing establishes router connections to different networks from the far left and far right. The Dynamic routing focus emphasizes immediate connection within the router while ignoring the other connections from different networks. Furthermore, the static routing uses the subnet mask to define networks such as 25.0.0.0/8, 129.60.0.0/16, and 200.100.10.0/30, which correspond to 255.0.0.0, 255.255.0.0, and 255.255.255.252. On the other hand, dynamic routing uses the wildcard mask to inverse the subnet mask, where network bits become 0 and host bits become 1, giving us 0.0.0.255, 0.0.255.255, and 0.0.0.3. Most importantly, the CLI commands used for Static and Dynamic routing are also different. For static routing, the “IP route” corresponds with the network, subnet mask, and next-hop IP address. In contrast, dynamic routing uses…arrow_forward
- Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrEBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
- Microsoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningProgramming with Microsoft Visual Basic 2017Computer ScienceISBN:9781337102124Author:Diane ZakPublisher:Cengage Learning




