# spliting a C++ program into a separate function.

c++
below you will find an entire code to calculate depreciation based on the age of a property. now,
i want to split the depreciation calculation only into a separate function, where the age is neither zero nor greater than 15. however , i am lost here. i would appreciate if someone could explain to me of how to solve this problem

#include <iostream.h>

int main()
{

int YearPurchased,Current_Year = 2007,age,count = 0,value,number,start;
double percent,depreciation,depreciation_part;

cout <<"Enter First Property Value:  ";
cin >> value;
while (value != -1)
{
number=count+1;
cout <<"Enter year purchsed: ";
cin >> YearPurchased;
age= Current_Year - YearPurchased;
if (age >15)
{
depreciation = double(value);
}
else if (age == 0)
{
depreciation =0;
}
else
{
depreciation =0;
for (int start=1;start<= age;start++)
{

switch (start)
{
case 1:
percent=0.12;
break;
case 2:
percent=0.10;
break;
case 3:
percent=0.09;
break;
case 4:
percent=0.08;
case 5:
percent=0.07;
break;
case 6:
percent=0.06;
break;
case 7:
percent=0.06;
break;
case 8:
percent=0.06;
break;
case 9:
percent=0.06;
break;
default:
percent=0.05;
}

depreciation_part= double(value) * percent;
depreciation = depreciation + depreciation_part;

}
}
cout <<"Property Number = ";
cout << number << "\n";

cout <<"Property Value = ";
cout << value << "\n";

cout <<"Depreciation = ";
cout << depreciation << "\n";

cout <<"Enter Property Value: ";
cin >> value;
}
return 0;
}
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Data Warehouse Architect / DBACommented:
Hi Francois,

This entire program computes depreciation.  It's minimalistic.

What, exactly, do you want the function to do?

Kent
0
R & D Engineering ManagerCommented:
you could do like this:
double Depreciation(int age,int value)
{

double percent,depreciation,depreciation_part;

if (age >15)
{
depreciation = double(value);
}
else if (age == 0)
{
depreciation =0;
}
else
{
depreciation =0;
for (int start=1;start<= age;start++)
{

switch (start)
{
case 1:
percent=0.12;
break;
case 2:
percent=0.10;
break;
case 3:
percent=0.09;
break;
case 4:
percent=0.08;
case 5:
percent=0.07;
break;
case 6:
percent=0.06;
break;
case 7:
percent=0.06;
break;
case 8:
percent=0.06;
break;
case 9:
percent=0.06;
break;
default:
percent=0.05;
}

depreciation_part= double(value) * percent;
depreciation = depreciation + depreciation_part;

}
}

return depreciation;
}

0
R & D Engineering ManagerCommented:
Is this a homework?
0
Commented:
I would agree with jkr and DeepAbrahamK...

Only one value is calculated within the main function so splitting it into something >>double Depreciation(int age,int value);

However I would prefer with pass by reference,

double Depreciation(int& age, int& value)
{
// rest of DeepAbrahamK's function
}

notice that in case of value=-1 the function can not handle this situation so you should call the function in the main procedure if (value!=-1)

Regards,

0
R & D Engineering ManagerCommented:
Yeah sorry it has to be passed by ref. at least int & value. Thanks for correcting

double Depreciation(int age,int& value)
{
double percent,depreciation_part;
.....
...
}

int main()
{
int YearPurchased,Current_Year = 2007,age,count = 0,value,number,start;
double depreciation;
cout <<"Enter First Property Value:  ";
cin >> value;
while (value !=0)
{
number=count+1;
cout <<"Enter year purchsed: ";
cin >> YearPurchased;
age= Current_Year - YearPurchased;
depreciation = Depreciation(age,value,number);
cout <<"Property Number = ";
cout << number << "\n";

cout <<"Property Value = ";
cout << value << "\n";

cout <<"Depreciation = ";
cout << depreciation << "\n";

cout <<"Enter Property Value: (Enter 0 to exit the calculation) ";
cin >> value;
}
return 0;
}

Best Regards,
DeepuAbrahamK
0

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Author Commented:
Howdy guys. I am sorry it took me a while to see the answers.
this is not a homework, i am just trying to solve some problems so i can understand more about C++.

I really appreciate your effort. but i think there is something missing here. for example, there should be at least 2 returns functions: one return depreciation;
and another for return 0;
so for example:
#include <iostream.h>

int Get_Number();         //Prototypes

void main(void)
{
int x,sum;
x = Get_Number();                  //call to function to get the user's number
cout << "\n The result from adding 1 + 2 + ... + " << x <<
" is " << sum << endl;
}

{
int number;
cout <<"\n Enter a number ";
cin >> number;
return number;
}

{
int total = 0,i;

for(i = 1; i <= n; ++i)
{
total = total + i;
}
}
so i think that the solution for my problem should be on the same way of writing the program above.
the reason i couldn't solve it because i got confused about how it goes. can you explain to me briefly about the logic here?
thanks guys. i really appreciate your efforts.
0
Commented:
{
//int number;
int* number=new int;
cout <<"\n Enter a number ";
cin >> *number;
//return number;
return *number;
}

{

//int total = 0,i;
int* total=new int;
for(i = 1; i <= n; ++i)
{
*total = *total + i;
}
return *total;
}

creating a variable like int total=0; within the function and trying to return its value gives an error. The reason is this variables are created on the function stack and when the function goes out of scope the variable is automatically deleted so you can not refer it anymore. By int* total=new int; you create the variable on the heap so you can use it whenever you want.
0
Commented:
{
int i;
int* total=new int;
*total=0;
for(i = 1; i <= n; ++i)
{
*total = *total + i;
}
return *total;
}
0
Author Commented:
thanls maco_land. what you are saying is very valuable . but what i was trying to say here is that the "int get_number " problem is just an example of how the "depreciation "problem should be coded. so basically  i would like  to implement the same system ( or the same way the code is written) to the depreciation problem.
thanks a lot.
0
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C++

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.