chapter 11: case studies1 chapter 11 case studies
TRANSCRIPT
![Page 1: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/1.jpg)
Chapter 2 Chapter 11: Case Studies 1
Chapter 11
Case Studies
![Page 2: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/2.jpg)
Chapter 11 Finding Maximum in List 2
Finding Maximum in List
Init maxWhile not end of list
Read valueIf (value>max)
max valueReport max
Need to know range of values
Need to assign sentinel, or use end-of-file (ctrl-d in UNIX) character.
![Page 3: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/3.jpg)
Chapter 11 Finding Maximum in List 3
Finding Maximum in List
Assume data are positive integers.Set sentinel to -999 (or any non-positive
integer).max = –1;printf("Enter value (–999 to end): ");scanf("%d", &value);while (value != –999) { if (value > max) max = value; printf("Enter value (–999 to end): "); scanf("%d", &value);}printf("Maximum is %d\n", max);
Write a do-while loop.
![Page 4: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/4.jpg)
Chapter 11 Finding Maximum in List 4
Finding Maximum in List
For the moment, to simplify matter, we assume first data is n, the number of elements in the list.
max = –1;printf("Enter the size of the list: ");scanf("%d", &n);for (i = 0; i < n; i++) { printf("Enter value: "); scanf("%d", &value); if (value > max) max = value;}printf("Maximum is %d\n", max);
![Page 5: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/5.jpg)
Chapter 11 Finding Maximum in List 5
Finding Maximum in List
We may initialise first data value to max.
printf("Enter the size of the list: ");scanf("%d", &n);printf("Enter value: ");scanf("%d", &value);max = value;for (i = 1; i < n; i++) { printf("Enter value: "); scanf("%d", &value); if (value > max) max = value;}printf("Maximum is %d\n", max);
![Page 6: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/6.jpg)
Chapter 11 Problem 6
Problem
Find the maximum and second maximum of a list of integers.
Do not assume the range of values for list elements.
Assume first data is list size n, where n >= 2.
![Page 7: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/7.jpg)
Chapter 11 Existential & Universal Test 7
Existential & Universal Test
Sometimes, we need to test some property in a list. Two common tests are:
Existentiality: is there an element with a certain property?
Universality: do all elements have a certain property?
![Page 8: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/8.jpg)
Chapter 11 Existential & Universal Test 8
Existential & Universal Test
Test for existentiality versus test for universality.
Is there a black egg among all eggs? This employs existentiality.
Are all eggs white? This employs universality.
Their codes are different.
![Page 9: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/9.jpg)
Chapter 11 Existential & Universal Test 9
Existential & Universal Test
Is there a black egg among all eggs?Data representation: 'b' is black, 'w' is white.
black_exists = 0;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'b') { black_exists = 1; break; }}if (black_exists) printf("Black egg exists.\n");else printf("Black egg does not exist.\n");
![Page 10: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/10.jpg)
Chapter 11 Existential & Universal Test 10
Existential & Universal Test
What is wrong with this code?
black_exists = 0;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'b') black_exists = 1;}if (black_exists) printf("Black egg exists.\n");else printf("Black egg does not exist.\n");
![Page 11: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/11.jpg)
Chapter 11 Existential & Universal Test 11
Existential & Universal Test
What is wrong with this code?
black_exists = 0;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'b') black_exists = 1; else black_exists = 0;}if (black_exists) printf("Black egg exists.\n");else printf("Black egg does not exist.\n");
![Page 12: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/12.jpg)
Chapter 11 Existential & Universal Test 12
Existential & Universal Test
Are all eggs white?
all_white = 1;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'b') { all_white = 0; break; }}if (all_white) printf("All eggs are white.\n");else printf("Not all eggs are white.\n");
![Page 13: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/13.jpg)
Chapter 11 Existential & Universal Test 13
Existential & Universal Test
What is wrong with this code?
all_white = 0;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'w') { all_white = 1; break; }}if (all_white) printf("All eggs are white.\n");else printf("Not all eggs are white.\n");
![Page 14: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/14.jpg)
Chapter 11 Existential & Universal Test 14
Existential & Universal Test
What is wrong with this code?
all_white = 0;for (i = 0; i < n; i++) { scanf("%c", &egg); if (egg == 'w') all_white = 1; else all_white = 0;}if (all_white) printf("All eggs are white.\n");else printf("Not all eggs are white.\n");
![Page 15: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/15.jpg)
Chapter 11 Problem 15
Problem
Given a list of integers, determine if the list is in strictly increasing order. For example, (-3, 0, 6, 17) is in strictly increasing order, but (-6, 2, 2, 5) and (5, 7, 8, 6) are not.
Do not assume the range of values for list elements.
Assume first data is list size n, where n >= 0. (An empty list and a list of one element are trivially in strictly increasing order.)
![Page 16: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/16.jpg)
Chapter 11 Quadratic Equations 16
Quadratic Equations
A quadratic equation in x is of this form:
ax2 + bx + c = 0
Assume that a, b, and c are integers, and a is not equal to zero.
Examples:2x2 - 3x -7 = 0; -3x2 + 8x -3 = 0; x2 + 4 = 0But 4x + 5 = 0; x3 + 3x2 + 2 = 0 are not.
![Page 17: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/17.jpg)
Chapter 11 Quadratic Equations 17
Quadratic Equations
Write a program to request for the values a, b, c of a quadratic equation and display the equation. See three sample runs below.
$ quadraticEnter a, b, c: 3, -7, 2Quadratic equation is 3x^2 – 7x + 2 = 0$ quadraticEnter a, b, c: 0, 2, 4This is not a quadratic equation.$ quadraticEnter a, b, c: -1, 0, -3Quadratic equation is -x^2 – 3 = 0
![Page 18: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/18.jpg)
Chapter 11 Quadratic Equations 18
Quadratic Equations
Add a loop in your program so that you can enter many equations in a single run, as shown below.
$ quadraticEnter a, b, c: 3, -7, 2Quadratic equation is 3x^2 – 7x + 2 = 0 Do you want to continue (y/n)? yEnter a, b, c: 0, 2, 4This is not a quadratic equation. Do you want to continue (y/n)? yEnter a, b, c: -1, 0, -3Quadratic equation is -x^2 – 3 = 0 Do you want to continue (y/n)? nBye!
![Page 19: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/19.jpg)
Chapter 11 Quadratic Equations 19
Quadratic Equations
Recall that the roots are:
[ -b ± (b2 - 4ac) ] / 2a
The discriminant is (b2 - 4ac). If this is positive, then there are two real roots
zero, then there is only one real root
negative, then there are imaginary roots
![Page 20: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/20.jpg)
Chapter 11 Quadratic Equations 20
Quadratic Equations
Solve the quadratic equations in your program, if they have real roots.
$ quadraticEnter a, b, c: 3, -7, 2Quadratic equation is 3x^2 – 7x + 2 = 0Real roots are: 2.00 and 0.33 Do you want to continue (y/n)? yEnter a, b, c: 0, 2, 4This is not a quadratic equation. Do you want to continue (y/n)? yEnter a, b, c: -1, 0, -3Quadratic equation is -x^2 – 3 = 0There are imaginary roots. Do you want to continue (y/n)? nBye!
![Page 21: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/21.jpg)
Chapter 11 Factorisation 21
Factorisation
Write a program to enter a list of positive integers, using zero as a sentinel to end the input.
For each positive integer entered, find out its factors, and display the factors as shown in the example, in increasing order of factors. (Factor 1 is listed only once)
![Page 22: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/22.jpg)
Chapter 11 Factorisation 22
Factorisation
Sample run. Enter a positive integer (0 to end): 11 = 1
Enter a positive integer (0 to end): 51 = 1 * 5
Enter a positive integer (0 to end): 81 = 1 * 2 * 2 * 2
Enter a positive integer (0 to end): 901 = 1 * 2 * 3 * 3 * 5
Enter a positive integer (0 to end): 911 = 1 * 7 * 13
Enter a positive integer (0 to end): 0Bye!
![Page 23: Chapter 11: Case Studies1 Chapter 11 Case Studies](https://reader036.vdocuments.net/reader036/viewer/2022081501/56649edd5503460f94bee002/html5/thumbnails/23.jpg)
Chapter 11 Homework 23
Homework
Try exercises in preceding slides.