Use the const
keyword to indicate that the parameter won't be changed.
printString("hello")
) does work.void printString(const string &str) { cout << str << endl; } int main() { printString("This could be a really really long string"); }
Exercise: what will be printed?
string t = "I am really really long string"; void foo(const string &s) { t = "hello"; cout << s; //hello } int main() { foo(t); return 0; }
Exercise: Is this program correct?
string t = "I am really really long string"; void foo(const string &s) { s = "hello"; //error cout << s; //hello } int main() { foo(t); return 0; }
Exercise: What will be printed?
string t = "I am really really long string"; void foo(string s) { t = "hello"; cout << s; //"I am a really really long string" } int main() { foo(t); return 0; }
What is the minimum and maximum time to cook for a dish:
void cookingTime(string const &dishName, double &minTime, double &maxTime) { if (dishName == "rice") { minTime = 10*60; maxTime = 15*60; } else if (dishName == "roti") { minTime = 1*60; maxTime = 1.2*60; } else if (dishName == "moong dal") { minTime = 20*60; maxTime = 40*60; } else .. .. } } int main() { double riceMinTime, riceMaxTime, moongdalMinTime, moongdalMaxTime; cookingTime("rice", riceMinTime, riceMaxTime) cookingTime("moongdal", moongdalMinTime, moongdalMaxTime) double totalMinTime = riceMinTime + moongdalMinTime; double totalMaxTime = riceMaxTime + moongdalMaxTime; cout << "min: " << totalMinTime << endl; cout << "max: " << totalMaxTime << endl; return 0; }
Another example: write a function quadratic
to find roots of quadratic equations:
ax^2 + bx + c = 0for some numbers
a
, b
, and c
.
Find roots using the quadratic formula:
x^2 - 3*x - 4 = 0
/* * Solves a quadratic equation ax^2 + bx + c = 0, * storing the results in output parameters root1 and root2. * Assumes that the given equation has two real roots. */ void quadratic(double a, double b, double c, double& root1, double& root2) { double d = sqrt(b * b - 4 * a * c); root1 = (-b + d) / (2 * a); root2 = (-b - d) / (2 * a); }
main | ---method1 | ---method2 | | | ---method3 | ---method4 | ---method5
main | ---method1 | ---method2 | |---method3 | ---method4 | ---method5
main
function should be a concise summary of the overall program
#include... string s = "hello"; ...
Characters: Characters are values of type char
with 0-based indexes:
string s = "Hi COL100!"; index 0 1 2 3 4 5 6 7 8 9 character 'H' 'i' ' ' 'C' 'O' 'L' '1' '0' '0' '!'Individual characters can be accessed using
[index]
or at
:
char c1 = s[3]; //'C' char c2 = s.at(1); //'i'Characters have ASCII encoding (integer mappings):
cout << (int)s[0] << endl; // 72