Trying to figure a Banking Program

J

jason1551

I'm working on a program that will compute interest on a savings
account. The interest is compounded monthly for 30 years, and a
desposit is made on the account at the beginning of each year. My
problem is that my C++ skills are pretty limited, and this needs to be
done within a few days. I've figured out a basic structure, but need
help understanding what is and what is not working. Here's what I've
got so far:

#include <iostream>
using namespace std;

int main()
{
double I, P, R;
int i, x;

P=2000.00;
R=00.06;

{
for (i=0; i<30; i++)
{
for (x=0; x<12; x++)
I=P+P*R;

cout<< i << " "<< I<<endl;
i++2000.00;
}
}
return 0;
}

I know that I have to use a nested loop at some point, but I'm not sure
if I set it up correctly. I also realize that this is pretty barebones
in terms of actual programming, as I'm not an expert and trying to keep
this as simple for myself as possible. Any advice would be extremely
helpful and appreciated.
 
O

osmium

I'm working on a program that will compute interest on a savings
account. The interest is compounded monthly for 30 years, and a
desposit is made on the account at the beginning of each year. My
problem is that my C++ skills are pretty limited, and this needs to be
done within a few days. I've figured out a basic structure, but need
help understanding what is and what is not working. Here's what I've
got so far:

#include <iostream>
using namespace std;

int main()
{
double I, P, R;
int i, x;

P=2000.00;
R=00.06;

{
for (i=0; i<30; i++)
{
for (x=0; x<12; x++)
I=P+P*R;

cout<< i << " "<< I<<endl;
i++2000.00;
}
}
return 0;
}

I know that I have to use a nested loop at some point, but I'm not sure
if I set it up correctly. I also realize that this is pretty barebones
in terms of actual programming, as I'm not an expert and trying to keep
this as simple for myself as possible. Any advice would be extremely
helpful and appreciated.

Nothing leaps out at me as being terribly wrong with what you have. But
since the indentation got lost somewhere it's a bit hard to look at. I am a
great believer in using a lot of functions, even for trivial things. I
would write two functions, one to credit the interest every month and
another to add to the principal every year. main would just manage the
process. Note that many nested loops disappear, as if by magic, when this
is done. Using a pidgin pseudocode main would be something like::

for(int year =0; year<30; year++)
do_something
for(int month =0; month<12; month++)
do_something else
 
J

Jim Langston

I'm working on a program that will compute interest on a savings
account. The interest is compounded monthly for 30 years, and a
desposit is made on the account at the beginning of each year. My
problem is that my C++ skills are pretty limited, and this needs to be
done within a few days. I've figured out a basic structure, but need
help understanding what is and what is not working. Here's what I've
got so far:

#include <iostream>
using namespace std;

int main()
{
double I, P, R;
int i, x;

P=2000.00;
R=00.06;

{
for (i=0; i<30; i++)
{
for (x=0; x<12; x++)
I=P+P*R;

cout<< i << " "<< I<<endl;
i++2000.00;

i++2000.00; does not compile for me.

Did you mean i+= 2000.00; and if so, why are you tring to add 2000.00; to
your for counter? Did you mean I? So I += 2000.00; ? And if so, why would
you add 2000.00 to your interest?

If this 2000.00 is deposited every year, isnt' it the Principal that
increases? So wouldn't it be
P += 2000.00;
?

But, your Interest, I you are already adding the princpal into I see.
Okay...

I = P + P*R;
That makes your Interest equal to Your Principal plus your prinicpal times
rate. Wrong. Your PRINCIPAL becomes your Principal + Interest, which is
Principal * Rate. So a few things gotta be fixed.

#include <iostream>

double Dollars( const double& Amount )
{
return ( static_cast<float>( static_cast<int>( Amount * 100.00 ) ) /
100.00 );
}

int main()
{
double I, P, R;
int y, m;
P = 0.0;
R = 00.06 / 12.00;
for (y = 0; y < 30; y++)
{
std::cout <<"Principal:" << P << " *** Deposit ***:" << 2000.00 << "
New Balance:" << P + 2000.00 << std::endl;
P += 2000.00;
for (m = 0; m < 12; m++)
{
I = Dollars( P * R );
std::cout << "Year:" << y + 1 << " Month:" << m + 1 << "
Principal:" << P << " Interest:" << I << " New Balance:" << P + I <<
std::endl;
P += I;
}
std::string wait;
std::getline( std::cin, wait );
}
std::string wait;
std::getline( std::cin, wait );
return 0;
}

Notice I changed i and x to y and m for Year and Month. Myself, I would go
ahead and use Year and Month as the counters themselves. Gets rid of the
type of confusion you had. Also, I doubt highly if the bank is going to
give you 6% monthy interest. That's 72% yearly interest not even
compounded. So each month one way to calculate it is to simply divide the
yearly rate by 12. Like I said, one way, different loans, even "simple
interest" are calculated different ways sometimes. This one is just common.
So, your monthly interest is 6% divided by 12 months, or 00.06 / 12.

Also, I gave a few more columns so you could see what was going on.

Also, I included a Dollars function. The reason being, the bank doesn't
give you half pennies, it drops them.

Also, changed the payments to the beginning of the year, not the end. Why?
Because otherwise you have 31 payments of 2000 instead of 31 (one at the
very end of the term).

I tested this and it looks somewhat right. The last line I see is:

Year:30 Month:12 Principal:172045 Interest:860.22 New Balance:172905
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,479
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top