4.11 c++上机【继承与派生2】
定义一个document类 派生出book类
#include <bits/stdc++.h>
using namespace std;
class ducumemt
{
private:
string name,text;
public:
void setname(string na)
{
name=na;
}
string getname()
{
return name;
}
char gettext(int i)
{
return text[i];
}
ducumemt()
{
name.clear();
text.clear();
}
int getsize()
{
return text.size();
}
void append(string k)
{
text+=k;
}
};
class book :public ducumemt
{
public:
int getpagecount(int p)
{
if(getsize()%p)
{
return getsize()/p+1;
}
else return getsize()/p;
}
void getpage(int p,int num)
{
if(num>pagecount)
{
printf("Error!\n");
return;
}
else
{
int ed;
if(num<pagecount) ed=num*p;
else ed=getsize()-1;
string m;
int st;
for(int i=(num-1)*p;i<ed;i++)
{
if(gettext(i)==' ')
{
st=i+1;
break;
}
}
for(int i=ed-1;i>=(num-1)*p;i++)
{
if(gettext(i)==' ')
{
ed=i;
break;
}
}
for(int i=st;i<ed;i++)
m+=gettext(i);
cout<<m<<endl;
}
}
private:
int pagecount;
};
int main()
{
book a;
string n,t;
printf("please input the name of the book:\n");
cin>>n;
a.setname(n);
printf("please input the text of the book:\n");
cin.ignore();
while(getline(cin,t))
{
a.append(t);
}
int pagecount=a.getpagecount(30);
cout<<pagecount<<endl;
a.getpage(30,4);
a.getpage(30,6);
return 0;
}