Basically I've finished my code for the most part and I'm having trouble figuring out how to initialize loan, mort_gage, and downpayment. Is it possible to use a pointer for each of these and call the address back to main? I'm so confused...it's just one of those little things that's driving me crazy.

#include<stdio.h>
#include<math.h>
#define PROPERTY_TAX_RATE 0.0125
#define COST_OF_UTILITIES 300.00
#define COST_OF_INSURANCE 500.00

void getData(double* pPrice, double* pInterest_rate,double* pYears);
double calcData(double pPrice, double pInterest_rate, double pYears, double downpayment,double* pUtilities,
	double* pProp_tax,double* pInsurance,double* ptotal,double mort_gage, double loan);
void calcLoan(double* pLoan,double* pNumber_compounding,double* pDownpayment, double* pMort_gage, 
			  double pPrice, double pYears, double pInterest_rate);
void output(double pPrice, double years, double interest_rate, double prop_tax, double insurance,
			double downpayment,double mort_gage, double utilities,double loan,double total);

int main (void)
{
	//Local Declarations
	double price;
	double interest_rate;
	double years;
	double downpayment;
	double loan;
	double utilities;
	double prop_tax;
	double insurance;
	double mort_gage;
	double total;

	getData(&price, &interest_rate, &years);//Good
	calcData(price, interest_rate, years, downpayment,&utilities, &prop_tax, &insurance,&total,mort_gage,loan); 
	output(price,years,interest_rate,prop_tax,insurance,downpayment,mort_gage,utilities,loan,total);

	return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void getData(double* pPrice, double* pInterest_rate,double* pYears)
{	

	//Asks for price
	printf("Enter the price: ");
	scanf("%lf",&pPrice);
	//Asks for interest rate
	printf("Enter the interest rate: ");
	scanf("%lf",&pInterest_rate);
	//Asks for the number of years
	printf("Enter the number of years: ");
	scanf("%lf",&pYears);

	return;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
double calcData(double pPrice, double pInterest_rate, double pYears, double downpayment,double* pUtilities,
	double* pProp_tax,double* pInsurance,double* ptotal,double mort_gage, double loan)
//total, property taxes = 1.25%/ 12, utilities divide by 12
{
	double number_compounding;
	
	//Calculates Utilities
	*pUtilities = COST_OF_UTILITIES;
	//Calculates Property Taxes
	*pProp_tax = (PROPERTY_TAX_RATE* pPrice)/12;	
	//Computes Insurance
	*pInsurance = COST_OF_INSURANCE;
	//Calculates the total
	*ptotal = *pUtilities + *pInsurance + *pProp_tax;

	//Loan Function
	calcLoan(&loan,&number_compounding, &downpayment, &mort_gage,pPrice, pYears, pInterest_rate);
	return 0; 
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////


void calcLoan(double* pLoan,double* pNumber_compounding,double* pDownpayment, double* pMort_gage, 
			  double pPrice, double pYears, double pInterest_rate) 
//downpayment, amount of loan, and monthly mortgage
{

	*pNumber_compounding = pYears*12;
	//loan calculations
	*pLoan = pPrice*((pow((1+pInterest_rate),*pNumber_compounding))-1)/((pInterest_rate)*(pow((1+pInterest_rate),*pNumber_compounding)));
	//downpayment
	*pDownpayment = pPrice*0.2;
	//mortgage
	*pMort_gage = (*pLoan*(pInterest_rate*pow((1+pInterest_rate),*pNumber_compounding)))/(pow((1+pInterest_rate),*pNumber_compounding) - 1);
	return;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void output(double pPrice, double years, double interest_rate, double prop_tax, double insurance,
			double downpayment,double mort_gage, double utilities, double loan,double total)
{
	printf("MONTHLY COST OF HOUSE\n");
	printf("SELLING PRICE $%.2lf\n",pPrice);
	printf("DOWN PAYMENT $%.2lf\n",downpayment);
	printf("AMOUNT OF LOAN $%.2lf\n",loan);
	printf("INTEREST RATE $%.2lf%%",interest_rate);
	printf("TAX RATE $%.2lf%%",prop_tax);
	printf("DURATION OF LOAN (YEARS) %d",(int)years);
	printf("\n");
	printf("MONTHLY PAYMENT\n");
	printf("\tMORTGAGE: %lf",mort_gage);
	printf("UTILITIES: %lf",utilities);
	printf("PROPERTY TAXES: %lf",prop_tax);
	printf("INSURANCE: %lf\n", insurance);
	printf("__________\n");
	printf("$.2lf",total);

	return;
}

The biggest thing that I see is line 30 you call calcData() but downpayment, mort_gage, loan are uninitialized..

I'm really confused on how to call those back to main because I've already set an address in calcData.

I'm really confused on how to call those back to main because I've already set an address in calcData.

pass pointer to calcData() for whichever value is getting modified from that function. You are modifying some at calcLoan() as well. For that also, you should pass address from main to calcData()

for eg:
if int i is a variable in main and to be modified in some other function 'b' which is called from function 'a' . Suppose 'a' is called from main.

Passing is like

From main:
a(&i);

In 'a':
<return type> a( int *i)
{
<something..>

b(i);

}

In b:
<return type> b( int *i)
{

 *i = <new val> ;
 .
 .

}

Edited 6 Years Ago by sree_ec: n/a

This article has been dead for over six months. Start a new discussion instead.