注解
1、分三种情况讨论:
(1)遇到br,光标指到下一行。
(2)遇到hr,如果此时光标不在开头,则光标指到下一行,然后输出80个-。否则不换行,直接输出80个-。
(3)遇到单词,先判断此时在不在一行的开头,如果在,直接输出该单词。否则,先判断该行能不能装得下这个单词,如果能,就输出空格并将该单词添加到该行。如果该行不能装得下该单词,就先把光标指到下一行,然后再输出该单词。
2、注意题目要求,读到文件尾后必须换行。
3、注意在全过程中,pos的数值变化。(也就是题目要求的,一行不能超过80个字符的要求!)
代码
#include <iostream>
using namespace std;
int main() {
string s;
int pos = 0;
while(cin>>s) {
if(s.compare("<br>")==0) {
cout<<endl;
pos = 0;
} else if(s.compare("<hr>")==0) {
if(pos) {
cout<<endl;
}
for(int i=0; i<80; i++) {
cout<<"-";
}
cout<<endl;
pos = 0;
} else {
if(pos==0) {
cout<<s;
pos += s.length();
} else {
pos = pos+1+s.length();
if(pos<80) {
cout<<" "<<s;
} else {
cout<<endl;
cout<<s;
pos = s.length();
}
}
}
}
cout<<endl;
}