1: //add_or_multiply.cpp 2: //Adds or multiplies integers. 4: #include <iostream> 5: #include <string> 6: #include <cstring> 7: using namespace std; 9: void DisplayUsage(); 10: /**< 11: Display information on program usage. 12: @return void 13: @pre None. 14: @post Information on program usage has been displayed. 15: */ 18: int main(int argc, char* argv[]) 19: { 20: if (argc == 1) 21: { 22: DisplayUsage(); 23: cout << "Press Enter to continue ... "; cin.ignore(80, '\n'); 24: return 1; 25: } 27: if (strlen(argv[1]) != 1 || 28: (argv[1][0] != '+' && argv[1][0] != '*')) 29: { 30: cout << "\nError: Bad first parameter (must be + or *)." 31: "\nProgram now terminating.\n\n"; 32: return 2; 33: } 35: int i; 36: int result; 37: switch (argv[1][0]) 38: { 39: case '+': 40: result = 0; 41: for (i=2; i<argc; i++) result += atoi(argv[i]); 42: cout << "sum = "; 43: break; 44: case '*': 45: result = 1; 46: for (i=2; i<argc; i++) result *= atoi(argv[i]); 47: cout << "product = "; 48: break; 49: } 50: cout << result << endl; 51: } 54: void DisplayUsage() 55: { 56: string blankLinesBefore(15, '\n'); 57: string blankLinesAfter(5, '\n'); 58: cout << blankLinesBefore 59: << "\nThis program requires two or more parameters. " 60: "\nThe first parameter must be a + sign or a * sign." 61: "\nEach subsequent parameter must be an integer." 62: "\nThe program then computes and displays the sum or " 63: "\nproduct of the integer values, as appropriate.\n" 64: "\nTypical usage:" 65: "\n\nprompt> add_or_multipy + 3 9 -4 12 17 -13 -18 2" 66: "\nsum = 8" 67: "\n\nprompt> add_or_multiply + 5" 68: "\nsum = 5" 69: "\n\nprompt> add_or_multiply * 12 3 2" 70: "\nproduct = 72" 71: "\n\nprompt> add_or_multiply * 27" 72: "\nproduct = 27" 73: << blankLinesAfter; 74: }