In C++, you've been thinking about some cascading if/switch structures (aside from those bad dreams, I mean). You wonder if maybe you could make them more re-usable by changing them into loops looking through an array. Let's give it a shot: Given the if structure: if (score >= 90) {         grade = 'A'; } else if (score >= 80) {         grade = 'B'; } else if (score >= 70) {         grade = 'C'; } else if (score >= 60) {         grade = 'D'; } else {         grade = 'F'; } You see that there are numbers being translated into letters. You envision a set of parallel arrays: cutoffs         grades +----+         +---+  | 90 |            | A | +----+         +---+  | 80 |            | B | +----+         +---+  | 70 |            | C | +----+         +---+  | 60 |            | D | +----+         +---+   | 0 |              | F | +----+         +---+ MAX_cutoff = 5 Now you write a simple loop: i = 0; while (i < MAX_cutoff && score < cutoffs[i]) {         i++; } grade = grades[i]; A little testing shows that this seems to work for normal cases, but fails when the data is over 100% or below 0% (whether by accident or on purpose). You decide to write the input functions to avoid such non-sense as negative scores, but think maybe the over 100% wouldn't be bad if it were your score. So you alter your arrays a bit: cutoffs         grades +-----+         +---+ | 100 |             | + | +-----+         +---+  | 90 |             | A | +-----+         +---+  | 80 |             | B | +-----+         +---+  | 70 |             | C | +-----+         +---+  | 60 |             | D | +-----+         +---+   | 0 |               | F | +-----+         +---+ MAX_cutoff = 6 Checking again, everything is working except the negatives. Just in case someone by-passes your input routines, you decide to make it safe and change: grade = (i >= MAX_cutoff) ? ('U') : (grades[i]); Now everything is working fine! Note how no changes are needed to the loop! Just the array needed to be changed to adjust it! Could this possibly be made into a nice generic function that could be applied to many problems -- simply getting the arrays and overflow error value as arguments? Wow! Please make sure the code meets all requirements above!

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

In C++, you've been thinking about some cascading if/switch structures (aside from those bad dreams, I mean). You wonder if maybe you could make them more re-usable by changing them into loops looking through an array. Let's give it a shot:

Given the if structure:

if (score >= 90)

{

        grade = 'A';

}

else if (score >= 80)

{

        grade = 'B';

}

else if (score >= 70)

{

        grade = 'C';

}

else if (score >= 60)

{

        grade = 'D';

}

else

{

        grade = 'F';

}

You see that there are numbers being translated into letters. You envision a set of parallel arrays:

cutoffs         grades

+----+         +---+

 | 90 |            | A |

+----+         +---+

 | 80 |            | B |

+----+         +---+

 | 70 |            | C |

+----+         +---+

 | 60 |            | D |

+----+         +---+

  | 0 |              | F |

+----+         +---+

MAX_cutoff = 5

Now you write a simple loop:

i = 0;

while (i < MAX_cutoff && score < cutoffs[i])

{

        i++;

}

grade = grades[i];

A little testing shows that this seems to work for normal cases, but fails when the data is over 100% or below 0% (whether by accident or on purpose). You decide to write the input functions to avoid such non-sense as negative scores, but think maybe the over 100% wouldn't be bad if it were your score. So you alter your arrays a bit:

cutoffs         grades

+-----+         +---+

| 100 |             | + |

+-----+         +---+

 | 90 |             | A |

+-----+         +---+

 | 80 |             | B |

+-----+         +---+

 | 70 |             | C |

+-----+         +---+

 | 60 |             | D |

+-----+         +---+

  | 0 |               | F |

+-----+         +---+

MAX_cutoff = 6

Checking again, everything is working except the negatives. Just in case someone by-passes your input routines, you decide to make it safe and change:

grade = (i >= MAX_cutoff) ? ('U') : (grades[i]);

Now everything is working fine!

Note how no changes are needed to the loop! Just the array needed to be changed to adjust it!

Could this possibly be made into a nice generic function that could be applied to many problems -- simply getting the arrays and overflow error value as arguments? Wow!

Please make sure the code meets all requirements above!

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 3 images

Blurred answer
Knowledge Booster
Random Class and its operations
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education