应用题
请使用VC6或使用【答题】菜单打开proj2下的工程proj2,该工程中含有一个源程序文件proj2.cpp,其中定义了CharShape类、Triangle类和Rectangle类。
CharShape是一个抽象基类,它表示由字符组成的图形(简称字符图形),纯虚函数Show用于显示不同字符图形的相同操作接口。Triangle和Rectangle是CharShape的派生类,它们分别用于表示字符三角形和字符矩形,并且都定义了成员函数Show,用于实现各自的显示操作。程序的正确输出结果应为:
*
***
*****
*******
########
########
########
请阅读程序,分析输出结果,然后根据以下要求在横线处填写适当的代码并删除横线。
(1)将Triangle类的成员函数Show补充完整,使字符三角形的显示符合输出结果。
(2)将Rectangle类的成员函数Show补充完整,使字符矩形的显示符合输出结果。
(3)为类外函数fun添加合适的形参。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“// ****found****”。
// proj2.cpp
#include <iostream>
using namespace std;
class CharShape {
public:
CharShape(char ch) : _ch(ch) {};
virtual void Show() = 0;
protected:
char _ch; //组成图形的字符
};
class Triangle : public CharShape {
public:
Triangle (char ch, int r) :
CharShape(ch), _rows(r) {}
void Show();
private:
int _rows; //行数
};
class Rectangle: public CharShape {
public:
Rectangle (char ch, int r, int c) : CharShape (ch), _rows(r), _cols(c) {}
void Show ();
private :
int _rows, _cols; //行数和列数
};
void Triangle::Show()
//输出字符组成的三角形
{
for (int i = 1; i < = _rows; i ++) {
// ********found********
for (int j = 1; j < =______; j ++)
cout << _ch;
cout << endl;
}
}
void Rectangle::Show()
//输出字符组成的矩形
{
// ********found********
for (int i = 1; i < =______; i++) {
// ********found********
for (int j = 1; j < =______; j++)
cout << _ch;
cout << endl;
}
}
// ********found******** 为fun函数添加形参
void fun (______) {cs. Show();}
int main()
{
Triangle tri ('*', 4);
Rectangle rect('#', 3, 8);
fun(tri);
fun(rect);
return 0;
}