/*This program reads a string of numbers separated by spaces from picint.dat and displays the result visually.*/ #include #include #include class Printer { public: Printer(char initial_character); void input(istream& input_stream); void check(); void output(); private: int number1, number2; char character; }; int main () { //Initialization Printer pair('*'); ifstream input_stream; input_stream.open("picint.dat"); if (input_stream.fail()) { cout << "Error opening picint.dat"; exit(1); } //Main program while (1) { pair.input(input_stream); pair.check(); pair.output(); } //End of program input_stream.close(); return 0; } Printer::Printer(char initial_character) : character(initial_character) {} void Printer::input(istream& input_stream) { input_stream >> number1 >> number2; } void Printer::check() { if (number1 < -6 || number2 < 0)//Check for validity { cout << "\nThe pair (" << number1 << ", " << number2 << ") is not valid input.\n" << "Maybe you should check Prof. Mozer's instructions\n" << "to see examples of valid input.\n"; exit(1); } } void Printer::output() { switch (number1) { case -1://-1:End line cout << endl; break; case -2://-2:Exit exit(1); case -3://-3:Change character character = number2; break; case -4://-4:Square for (int counter1 = 0; counter1 < number2; counter1++) { for (int counter2 = 0; counter2 < number2; counter2++) cout << character; cout << endl; } break; case -5://-5:Upright triangle for (int counter1 = 0; counter1 < number2; counter1++) { for (int counter2 = 0; counter2 <= counter1; counter2++) cout << character; cout << endl; } break; case -6://-6:Upside-down triangle for (int counter1 = 0; counter1 < number2; counter1++) { for (int counter2 = 1; counter2 <= number2 - counter1; counter2++) cout << character; cout << endl; } break; default://Characters and spaces for (int counter1 = 0; counter1 < number1; counter1++) cout << character; for (int counter1 = 0; counter1 < number2; counter1++) cout << " "; } }