void raise_salary(Employee& e, double by) // function definition
{ double new_salary = e.get_salary() * ( 1 + by / 100);
e.set_salary(new_salary);
}
int main()
{ Employee harry("Hacker, Harry", 45000.00);
raise_salary(harry, 5); // function call
cout << "New salary: " << harry.get_salary() << "\n";
return 0;
}
parameter
variable |
reference
parameter |
constant
reference
parameter |
new variable,
copying |
reference to
an
existing variable |
constant
reference to a value |
input
parameter |
may be input
and should
be output
parameter |
input parameter |
can modify
the
parameter (bad style) |
should modify the parameter | cannot modify the parameter |
can be bound
to
any expression |
must be bound
to
the variable |
can be bound to any expression |
double future_value(double initial_balance, double p, int n)
{ double r = initial_balance * pow(1 + p / 100, n);
return r;
}
int main()
{ cout << "Please enter the interest rate in percent: ";
double r;
cin >> r;
double balance = future_value(10000, r, 10);
cout << "After 10 years the balance is" << balance
<< "\n";
return 0;
}
/**
Turns a number into its English name.
@param n a positive integer < 1000000 (e.g. 274)
@return the name of n (e.g. "two hundred seventy four")
*/
string int_name(int n);
/**
Turns a digit into its English name
@param n an integer between 1 and 9
@return the name of n ("one" ... "nine")
*/
string digit_name(int n);
/**
Turns a number between 10 and 19 into its English name.
@param n an integer between 10 and 19
@return the name of n ("ten"..."nineteen")
*/
string teen_name(int n);
/**
Gives the English name of a multiple of 10
@param n an integer between 2 and 9
@return the name of 10 * n ("twenty"..."ninety")
*/
string tens_name(int n);
string int_name(int n)
{ int c = n; /* the part that needs to be converted */
string r; /* the return value */
if (c >= 1000)
{ r = name of thousands in c + "thousand"
remove thousands from c
}
if (c >= 100)
{ r = r + name of hundreds in c + "hundreds"
remove hundreds from c
}
if (c >= 20)
{ r = r + name of tens in c
remove tens from c
}
if (c >= 10)
{ r = r + name of c
c = 0
}
if (c > 0)
r = r + name of c;
return r;
}
if (c >= 1000)
{ r = int_name(c / 1000) + " thousand";
c = c % 1000;
}
int_name(416) c r 416 ""
int_name(416) c r 416 ""
digit_name(4) Returns "four"
int_name(416) c r416"" 16 "four hundred"
int_name(416) c r416""16"four hundred" 0 "four hundred sixteen"
Syntax 5.6 : Assertions assert(expression);
|
double future_value(double initial_balance, double p, int n)
{ assert(p >= 0);
assert(n >= 0);
return initial_balance * pow(1 + p / 100, n);
}
/**
Computes the value of an investment with compound interest.
@param initial_balance the initial value of the investment
@param p the interest rate in percent; must be >= 0
@param n the number of periods the investment is held; must be >= 0
@return the balance after n periods
*/