-
Whats the problem here?!
Oook..im asked to create a savings calculation program. using a user defined contructor to initialise the values & also to set the values. Prior to this I used to constructor to initialise the values to 0/0.0 ect & then i had set methods to assign the values. After reading the briefing no set methods were to be used!
soooo I moddifed my program but now the output calculations are wrong? and i cant see why :( ....can some 1 point me to where or why this is happening plz
-------------------------------------
Header
------------------------------------
class Savings{
private:
double Investment;
double Rate;
int Period;
public:
Savings(double InvIn, double RateIn, int PeriodIn);
double getFinalValue();
};
-----------------------------------------
Implementation
-----------------------------------------
# include "Savings.h"
Savings::Savings(double InvIn, double RateIn, int PeriodIn ){
Investment=InvIn;
Rate=RateIn;
Period=PeriodIn;
}
double Savings::getFinalValue(){
for (int i=0; i<=Period; i++) //int i=1 makes answer wrong aswell
Investment +=(Investment*Rate/100);
return Investment;
}
-----------------------------------------------------
main cpp
-----------------------------------------------------
# include <iostream.h>
# include <conio.h>
# include "Savings.h"
void main()
{
double Inv=0.0, Rate=0.0;
int Period=0;
cout<<"Investment = ";
cin>>Inv;
cout<<""<<endl;
cout<<"Yearly Interest Rate = ";
cin>>Rate;
cout<<""<<endl;
cout<<"Saving Duration(Years) = ";
cin>>Period;
Savings NewSavings(Inv, Rate, Period);//Create new object of the savings class
//& Assign data values...
clrscr(); //Clear the screen
cout<<"Investment(£):";
cout.width(29); //allign the values for tidiness
cout<<Inv<<endl;
cout<<"Yearly Interest Rate(%):";
cout.width(18);
cout<<Rate<<endl;
cout<<"Duration(Years):";
cout.width(27);
cout<<Period<<endl;
cout<<"Amounts to a final calculation of:";
cout.width(8);
cout<<"£"<<NewSavings.getFinalValue();
}
--------------------------------------------------------------------------
Was giving the correct answer before i changed it to remove the set methods. Now when im passing the values via paramater to the class the output answer is wrong wrong wrong
Oh why why why :confused:
-
Hi mate,
probably your formula is wrong:
for (int i=0; i<=Period; i++) //int i=1 makes answer wrong aswell
This actually iterates Period + 1 times, so if you calculate the value for a year (Period == 1) you iterate through the loop twice!
another tip: When initializing in a constructor, get used to use an initializer list. It's tidier and more efficient in most cases.
Savings::Savings(double InvIn, double RateIn, int PeriodIn )
: Investment(InvIn),
Rate(RateIn),
Period(PeriodIn)
{
}
and if you want to use some statndard values for initialization try this:
Savings::Savings(double InvIn = 100.0 /* in £ */, double RateIn = 0.05 /* 1 == 100% */, int PeriodIn = 10 /* in years */)
: Investment(InvIn),
Rate(RateIn),
Period(PeriodIn)
{
}
Cheers,
D
-
And another typo:
double literals in c/c++ are normally told apart from integer literals by a .0
You divide "Rate/100" which should be "Rate/100.0". There are some rules where you get away with such sloppiness because of automatic type conversion, but better be tidy there.
D
-
all fixed......
i assumed the windows calculator was itterating the +% ontop of the new sum from the oprevious +%
seems it wasnt!!!
Cheers for your help with the contructor initialisation & the itteration prob :WAVE:
Last edited by process; 03-15-2005 at 03:47 PM.
-
I got this in my email:
not: 1% of 10 is 0.1 so your result is correct...
ok, ive fixed the itteration problem
for (int i=1; i<=Period; i++)
Investment +=(Investment*Rate/100);
that initialisation method is new to me & i have used it.Thanks :D
:Investment(InvIn),
Rate(RateIn),
Period(PeriodIn)
{
}
But the problem still here...My calculation above must be wrong?
ie: if i enter the following:
investment = 10
rate = 1%
period = 1
I get the answer 10.1
but it should be 11
:confused:
***************
-
ye lollol!..sorry that was a moment of thickness
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks