Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 1400 Pick ups from chapters 4 and 5. if-else-if Chained if statements can be useful for menus… Enter savings plan choice: (A) economy rate (B) saver.

Similar presentations


Presentation on theme: "CS 1400 Pick ups from chapters 4 and 5. if-else-if Chained if statements can be useful for menus… Enter savings plan choice: (A) economy rate (B) saver."— Presentation transcript:

1 CS 1400 Pick ups from chapters 4 and 5

2 if-else-if Chained if statements can be useful for menus… Enter savings plan choice: (A) economy rate (B) saver rate (C) preferred rate (D) special rate

3 Example Menu char choice; cin >> choice; if (choice == ‘A’) rate = 2.15; else if (choice == ‘B’) rate = 3.25; else if (choice == ‘C’) rate = 4.86; else rate = 5.22;

4 The switch statement General form: switch (ordinal variable) { case constant value 1 : statements break; case constant value 2 : statements break; case constant value 3 : statements break; … default: statements }

5 Example Menu (bis) char choice; cin >> choice; switch (choice) {case ‘A’:rate = 2.15; break; case ‘B’:rate = 3.25; break; case ‘C’:rate = 4.86; break; default:rate = 5.22; }

6 The break is optional… char choice; cin >> choice; switch (choice) {case ‘A’: case ‘a’:rate = 2.15; break; case ‘B’: case ‘b’: rate = 3.25; break; case ‘C’: case ‘c’:rate = 4.86; break; default:rate = 5.22; }

7 Compound boolean expressions Two relational (or Boolean) expressions can be combined using && (and) || (or) examples: if ((age > 21) && (age < 35)) cout << “You could be drafted!”; if ((age 120)) cout << “Incorrect age!”; (Don’t confuse with & and |)

8 Precedence && has precedence over || relational operators have precedence over && if (a d || e==f)same as if (((a d)) || (e==f))

9 Caution!! Be sure &&, || are between relational expressions or Boolean variables… if (a < b||c)?? if (b&&a == c)??

10 Comparing two strings… The following will have unexpected results: char name1[20], name2[20]; cin >> name1 >> name2; if (name1 == name2) cout << “these names are the same!”; The reasons will become clear later on… This is correct: if (strcmp (name1, name2) == 0) cout << “these names are the same!”; *FYI

11 Testing for file errors… A file variable may be tested for the failure of the most recent file operation using the member function.fail() Example: ifstream fin; fin.open(“f:myfile.txt”); if (fin.fail()) cout << “this file could not be opened!”; Alternate example: if (!fin) cout << “this file could not be opened!”;

12 Other loop statements… The do-while loop do {statements; } while ( expr ) ; This is a post-test loop: The expression is tested at the bottom of the loop and always performs at least one iteration

13 Example; Input validation – a program must prompt for an age and only accept a value greater than 0 and less than 120. do { cout << “Enter a valid age: “; cin >> age; } while ((age 120));

14 Other loop statements. The for loop for ( initialization ; test expr ; update ) { statements; } This is a pre-test loop: The test expression is tested at the top of the loop. The initialization, test expression and update segments can be any valid C++ expression

15 Explanation of segments… initialization –This segment is executed once prior to beginning the loop test expr –This segment is executed prior to each iteration. If this segment is false, the loop terminates update –This segment is executed at the bottom of each iteration.

16 Example; Add 20 numbers input by the user; float num, sum = 0.0; int n; for (n=0; n<20; n++) { cout << “Enter a number: “; cin >> num; sum += num; }

17 Example variation… The test variable can actually be declared within the loop float num, sum = 0.0; for (int n=0; n<20; n++) { cout << “Enter a number: “; cin >> num; sum += num; }

18 A programmer has a choice… Convert the following while loop to a for loop int count = 0; while (count < 50) { cout << “count is: “ << count << endl; count ++; } Convert the following for loop to a while for (int x = 50; x > 0; x-- ) { cout << x << “ seconds to launch.\n”; }

19 Example – loan amoritization A case study (5.14, pg 295) Write a loan amoritization program –inputs: principle, interest_rate, num_years –outputs: monthly payment for each month: month number, interest, principle, remaining_balance

20 Formulas payment = (principle * interest_rate/12 * term) / (term-1) where term = (1 + interest_rate/12) num_years * 12 monthly_interest = (annual_rate / 12) * balance principle = payment – monthly_interest

21 Example execution: Enter loan amount: $ 2500 Enter annual Interest rate: 0.08 Enter number of years: 2 Monthly payment: $113.07 month interest principle balance 1 16.6796.402403.60 216.0297.042306.55 315.3897.692208.86 … (a total of 24 month lines)

22 Pseudocode… 1.Prompt and input loan amount, annual interest rate, and number of years 2.Calculate and display monthly payment 3.Print report header 4.For each month in the loan period: a)calculate the monthly interest on the current balance b)calculate the principle for this month’s payment c)display the month number, interest, principle, and balance d)calculate the new balance

23 1 2 3 for ( int month = 1 ; month <= num_years * 12 ; month++) // 4. {}{} d) c) b) a) First refinement…

24 Example – loops within loops table of grades file Students: 64 John 9 scores: 9 7 8 9 6 10 10 8 10 Fred 13 scores: 7 8 5 6 7 6 8 9 6 10 9 10 3 Emily 8 scores: 8 4 5 3 9 7 5 4 …

25 Pseudocode – rough outline 1. Input number_of_students 2. Repeat for number_of_students iterations; a-f) process a student and output the name and average

26 Pseudocode – more detail 1. Input number_of_students 2. Repeat for number_of_students iterations; a-b) Input student_name and count_of_grades c-d) sum grades for this student e) Calculate average f) Output student_name and average

27 Pseudocode -- final detail 1. Input number_of_students 2. Repeat for number_of_students iterations; a) Input student_name b) Input count_of_grades c) initialize sum to 0. d) Repeat for count_of_grades iterations; i– Input grade ii– sum grade e) Calculate average f) Output student_name and average

28 1 for ( int student = 0 ; student < num_of_students ; student++) //2 {}{} c) b) a) First refinement… e) f) d)

29 c) Second refinement… e) f) … for (int count=0; count<num_of_grades; count++) // d) { } … ii-- i--

30 Examples – loops within loops for (int n=0; n<4; n++) {for (int k=0; k<3; k++) { cout << “n: “ << n << “ k: “ << k << endl; } for (int n=0; n<4; n++) {for (int k=n; k<3; k++) { cout << “n: “ << n << “ k: “ << k << endl; }


Download ppt "CS 1400 Pick ups from chapters 4 and 5. if-else-if Chained if statements can be useful for menus… Enter savings plan choice: (A) economy rate (B) saver."

Similar presentations


Ads by Google