Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

🎯 Objective

The given program reads a list of single-word first names and ages (ending with -1) and outputs that list with the age incremented. By single word - you would not use getline. The program fails and throws an exception if the second input on a line is a string rather than an int. At FIXME in the code, add a try/catch statement to catch ios_base::failure, and output 0 for the age.

Ex: If the input is:

Lee 18
Lua 21
Mary Beth 19
Stu 33
-1

The output would be:

Lee 19
Lua 22
Mary 0
Stu 34

Note: Note: Insert the following code in the catch block to clear the failbit and cin buffer so a new input can be read correctly:

// Clear failbit to be able to use cin again
cin.clear();
// Throw away the rest of the failed input line from cin buffer
string garbage;
getline(cin, garbage);

\uD83D\uDDD2 Code Starter

#include <string>
#include <iostream>

using namespace std;

int main() {
   string inputName;
   int age;
   // Set exception mask for cin stream
   cin.exceptions(ios::failbit);

   cin >> inputName;
   while(inputName != "-1") {
      // FIXME: The following line will throw an ios_base::failure.
      //        Insert a try/catch statement to catch the exception.
      //        Clear cin's failbit to put cin in a useable state.
      cin >> age;
      cout << inputName << " " << (age + 1) << endl;

      cin >> inputName;
   }
   
   return 0;
}

🚚 Deliverable

Upload the following:

  1. Full source code (.cpp files or .txt files)

  2. Screenshot of the Console with the code executing

  • No labels