2960: 改错题--小鼠标,你要干什吗?
时间限制: 1 Sec 内存限制: 128 MB提交: 118 解决: 62
题目描述
鼠标双击不同的图标产生不同的效果,比如双击文档(document)文件,则打开文档文件;双击图形(graphics)文件,则显示图形;双击视频(video)文件,则播放视频。下面程序是鼠标的双击三种文档、图形和视频类型文件的程序。
注:本题只需要提交修改和完善部分的代码,请按照C++方式提交。
#include <string>
#include <iostream>
using namespace std;
/* 修改和完善该部分代码
class Filetype
{
public:
void DoubleClick() =0;
virtual Filetype(string name)
{
Filename = name;
}
string getFilename()
{
return Filename;
}
virtual ~Filetype() {}
private:
string Filename;
};
*/
class Documenttype:public Filetype
{
public:
void DoubleClick()
{
cout<<"Document file :"<< getFilename()<<endl;
}
Documenttype(string name):Filetype(name)
{
}
};
class Graphicstype:public Filetype
{
public:
void DoubleClick()
{
cout<<"Graphics file :"<< getFilename()<<endl;
}
Graphicstype(string name):Filetype(name)
{
}
};
class Videotype:public Filetype
{
public:
void DoubleClick()
{
cout<<"Video file :"<< getFilename()<<endl;
}
Videotype(string name):Filetype(name)
{
}
};
int main()
{
string name;
Filetype *ptype;
cin>>name;
ptype=new Documenttype(name);
ptype->DoubleClick();
delete ptype;
cin>>name;
ptype=new Graphicstype(name);
ptype->DoubleClick();
delete ptype;
cin>>name;
ptype=new Videotype(name);
ptype->DoubleClick();
delete ptype;
return 0;
}
输入
输入有3行
第一行是一个文档文件名,第二行是一个图形文件名,第三行是一个视频文件名
输出
第一行输出Document file :文档文件名
第二行输出Graphics file :图形文件名
第三行输出Video file :视频文件名
样例输入
a.txt
b.bmp
c.mp4
样例输出
Document file :a.txt
Graphics file :b.bmp
Video file :c.mp4
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include <string> #include <iostream> using namespace std; class Filetype { public: virtual void DoubleClick() =0; Filetype(string name) { Filename = name; } string getFilename() { return Filename; } virtual ~Filetype() {} private: string Filename; }; class Documenttype:public Filetype { public: void DoubleClick() { cout<<"Document file :"<< getFilename()<<endl; } Documenttype(string name):Filetype(name){} }; class Graphicstype:public Filetype { public: void DoubleClick() { cout<<"Graphics file :"<< getFilename()<<endl; } Graphicstype(string name):Filetype(name){} }; class Videotype:public Filetype { public: void DoubleClick() { cout<<"Video file :"<< getFilename()<<endl; } Videotype(string name):Filetype(name){} }; int main() { string name; Filetype *ptype; cin>>name; ptype=new Documenttype(name); ptype->DoubleClick(); delete ptype; cin>>name; ptype=new Graphicstype(name); ptype->DoubleClick(); delete ptype; cin>>name; ptype=new Videotype(name); ptype->DoubleClick(); delete ptype; return 0; }