This week's lecture and assignment in my Intro C++ class was all about functions. My assigment required that my program contain at least one function. Comments welcome.
// SSINN - Subtle, Semi-Subtle, Implied, Null, and Neither /* Author: Dennis Groome * * Purpose: Determine if a seven-digit integer is: * * Subtle: The middle digit is a divisor of bother the left three * digits and the right three digits. * Semi-Subtle: The middle digit is a divisor of either the left or * right three digits, but not both. * Implied: The middle digit is a factor of the origional * seven-digit number. * Null: The middle digit is zero * Neither: the number is none of the above * * Input: A sequence of integers, one per line, most of which are seven-digits * * Output: A single line for each number input which is either an error message * or a statement of category followed by a blank line and then a six * line summary indicating the number of values investigated and the * number of values in each category. * * Single line output is one of the following: * * ### is TOO SMALL * ### is TOO BIG * ### is Subtle * ### is Semi-Subtle * ### is Implied * ### is Null * ### is nothing special * * Where ### represents the number in question * * The last single line output is seperated from the six line summary * by three blank lines, the summary has the general form: * * ## numbers were investigated * ## were Subtle * ## were Semi-Subtle * ## were Implied * ## were Null * ## were nothing special */ #include// subprogram prototypes int count_digits (int); int investigate (int); int main () { // program: SSINN int intNumber; // number being investigated int intTotalNumbers; // number of integers being investigated int intSubtle; // number of Subtle numbers int intSemiSubtle; // number of Semi-Subtle numbers int intImplied; // number of Implied numbers int intNull; // number of Null numbers int intNothing; // number of numbers that are nothing special // initializations intTotalNumbers = 0; intSubtle = 0; intSemiSubtle = 0; intImplied = 0; intNull = 0; intNothing = 0; // get first number cin >> intNumber; while (cin) { // investigate the number intTotalNumbers = intTotalNumbers + 1; if (count_digits(intNumber) < 7) { // number is too small cout << intNumber << " is TOO SMALL\n" << endl; } // number is too small if (count_digits(intNumber) > 7) { // number is too big cout << intNumber << " is TOO BIG\n" << endl; } // number is too big if (count_digits(intNumber) == 7) { // number is seven-digits // investigate category if (investigate(intNumber) == 1) { // number is Subtle cout << intNumber << " is Subtle\n" << endl; intSubtle = intSubtle + 1; } // number is Subtle if (investigate(intNumber) == 2) { // number is Semi-Subtle cout << intNumber << " is Semi-Subtle\n" << endl; intSemiSubtle = intSemiSubtle + 1; } // number is Semi-Subtle if (investigate(intNumber) == 3) { // number is Implied cout << intNumber << " is Implied\n" << endl; intImplied = intImplied + 1; } // number is Implied if (investigate(intNumber) == 4) { // number is Null cout << intNumber << " is Null\n" << endl; intNull = intNull + 1; } // number is Null if (investigate(intNumber) == 5) { // number is nothing special cout << intNumber << " is nothing special\n" << endl; intNothing = intNothing + 1; } // number is nothing special } // number is seven-digits cin >> intNumber; } // investigate the number // output summary cout << endl << endl << intTotalNumbers << " numbers were investigated\n"; cout << "\t" << intSubtle << " were Subtle\n"; cout << "\t" << intSemiSubtle << " were Semi-Subtle\n"; cout << "\t" << intImplied << " were Implied\n"; cout << "\t" << intNull << " were Null\n"; cout << "\t" << intNothing << " were nothing special\n"; } // program: SSINN int count_digits (int intNumber) /* Purpose: Count the digits in intNumber * * Input: the number in question as parameter * * Output: the number of digits in number in question as return value */ { // function count_digits int intDigits; // number of digits in number // initializations intDigits = 0; // while there is still a number while (intNumber > 0) { // get one digit intNumber = intNumber / 10; intDigits = intDigits +1; } // get one digit return intDigits; } // function count_digits int investigate (int intNumber) /* Purpose: assign a category to a seven digit integer * * Input: the number in question, as a parameter * * Output: an integer from 1 to 5 according to category as a return value where * 1 is Subtle * 2 is Semi-Subtle * 3 is Implied * 4 is Null * 5 is nothing special */ { // function: investigate int intFirstThree; // first three digits of seven digit integer int intMiddle; // middle digit of seven digit integer int intLastThree; // last three digits of seven digit integer // break seven digit integer down intFirstThree = intNumber / 10000; intMiddle = intNumber / 1000 % 10; intLastThree = intNumber % 1000; // assign category if (intMiddle == 0) { // number is Null return 4; } // number is Null if ((intFirstThree % intMiddle == 0) && (intLastThree % intMiddle == 0)) { // number is Subtle return 1; } // number is Subtle if ((intFirstThree % intMiddle == 0) || (intLastThree % intMiddle == 0)) { // number is Semi-Subtle return 2; } // number is Semi-Subtle if (intNumber % intMiddle == 0) { // number is Implied return 3; } // number is Implied // number is nothing special return 5; } // function: investigate
