Create two structures and name the types Account and Money. The Money struct has
ID: 3877869 • Letter: C
Question
Create two structures and name the types Account and Money. The Money struct has two variables One represents how many dollars you have The other represents h ow many cents you have .The Account struct has three variables - A Money struct that will represent how much money is in the account One variable to represent the interest rate as a decimal value. The final variable will contain the name of the account. (Checking. Savings, CD, etc.) Negative amounts of Money are stored by making both variables of the Money object negative * Use the following function prototypes - Account createAccount () * The function shall prompt the user for an account name, interest rate, and starting balance in that order * The prompts shall appear as follows: Let's set up your account First, what' s the name of the account? What is the interest rate of your [NAME] account? Finally, what is the starting balance of your [NAME] account? $ · [NAME] shall be replaced with the name of the account * You may NOT assume that the name of the account contains only a single word * You may assume the user will always type an interest rate as a decimal value (e.g., 0.05) * You may also assume that a positive and valid (whole number or no more than two decimal places) amount of money will be entered - Account deposit (Account account, Money deposit) * The function shall not accept negative amounts of money . If a negative amount of money is attempted to be deposited, an error message will be displayed, and the original account will be returnedExplanation / Answer
Solution:
code:
#include <iostream>
#include <cmath>
#define MAX_SIZE 50
using namespace std;
// create a struct for Money which contains variables for dollars and cents
struct Money {
int dollars;
int cents;
};
// create class Account which contains variables for Account amount, interest rate and account name.
struct Account {
Money money;
double interestRate;
char name[MAX_SIZE];
};
// createAccount() is used to setup a new account from user.
Account createAccount() {
Account acc;
cout<<" Let's setup your account.";
cout<<" First, what's the name of the account? ";
cin.getline(acc.name, MAX_SIZE, ' ');
cout<<" What is the interest rate of your "<<acc.name<<" account? ";
cin>>acc.interestRate;
cout<<" Finally, what's the starting balance of your "<<acc.name<<" account? $";
double balance;
cin>>balance;
// after getting the decimal amount from the user, we need to create a new Money object
Money mon;
// For xample, if the user has entered 100.5, then dollars = 100 and cents = 0.5 * 1100 = 50
mon.dollars = floor(balance);
mon.cents = (balance - mon.dollars)*100;
acc.money = mon;
return acc;
}
// deposit() function is used to deposit a given money into the account.
Account deposit(Account acc, Money deposit) {
// if the amount to be deposited is -ve, print an error message
if(deposit.dollars < 0 || deposit.cents < 0) {
cout<<" Sorry, cannot deposit negative amount!!";
return acc;
}
// else add the money into the account
acc.money.dollars += deposit.dollars;
acc.money.cents += deposit.cents;
// if the value of cents becomes more than 100, increment dollar value by 1
// and set to cents value to cents % 100.
// ex., if new amount becomes 100.140, then dollars = 101 and cents = 40
if(acc.money.cents >= 100) {
acc.money.cents %= 100;
acc.money.dollars += 1;
}
cout<<" $"<<deposit.dollars<<"."<<deposit.cents<<" deposited into "<<acc.name;
return acc;
}
// withdraw() function is used to withdraw a given money from the account.
Money withdraw(Account &acc, Money withdraw) {
// if the amount to be withdrawn is -ve, print an error message
if(withdraw.dollars < 0 || withdraw.cents < 0) {
cout<<" Sorry, cannot withdraw negative amount!!";
withdraw.dollars = 0;
withdraw.cents= 0;
return withdraw;
}
// else withdraw the given amount
acc.money.dollars -= withdraw.dollars;
acc.money.cents -= withdraw.cents;
// if the value of cents becomes less than 100, decrement dollar value by 1
// and set to cents value to cents + 100.
// ex., if new amount becomes 100.-40, then dollars = 99 and cents = 60
if(acc.money.cents < 100) {
acc.money.cents += 100;
acc.money.dollars -= 1;
}
cout<<" $"<<withdraw.dollars<<"."<<withdraw.cents<<" withdrawn from "<<acc.name;
return withdraw;
}
// accrue() method is used to display the account details.
void accrue(Account &acc) {
cout<<" At "<<acc.interestRate<<"%, your "<<acc.name<<" account earned $"
<<acc.money.dollars<<"."<<acc.money.cents;
}
void print(Account acc) {
cout<<"$"<<acc.money.dollars<<"."<<acc.money.cents;
}
void print(Money money) {
cout<<"$"<<money.dollars<<"."<<money.cents;
}
int main () {
Account account = createAccount();
Money dep;
dep.dollars = 45;
dep.cents = 50;
cout<<" Trying to deposit ";
print(dep);
cout<<"....";
account = deposit(account, dep);
dep.dollars = -9;
dep.cents = 50;
cout<<" Trying to deposit ";
print(dep);
cout<<"....";
account = deposit(account, dep);
Money with;
with.dollars = 10;
with.cents = 80;
cout<<" Trying to withdraw ";
print(with);
cout<<"....";
with = withdraw(account, with);
with.dollars = -9;
with.cents = 50;
cout<<" Trying to withdraw ";
print(with);
cout<<"....";
with = withdraw(account, with);
accrue(account);
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.