+ All Categories
Home > Documents > Chapter 11: Case Studies1 Chapter 11 Case Studies.

Chapter 11: Case Studies1 Chapter 11 Case Studies.

Date post: 02-Jan-2016
Category:
Upload: madison-poole
View: 241 times
Download: 5 times
Share this document with a friend
23
Chapter 2 Chapter 11: Case Studies 1 Chapter 11 Case Studies
Transcript
Page 1: Chapter 11: Case Studies1 Chapter 11 Case Studies.

Chapter 2 Chapter 11: Case Studies 1

Chapter 11

Case Studies

Page 2: Chapter 11: Case Studies1 Chapter 11 Case Studies.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Chapter 11 Homework 23

Homework

Try exercises in preceding slides.


Recommended