水题:HDU-1088-Write a simple HTML Browser(模拟题)
2017-05-04 21:25
330 查看
解题心得:
1、仔细读题,细心细心。。。。。。
2、题的几个要求:超过八十个字符换一行,<br>换行,<hr>打印一个分割线,最后打印一个新的空行。主要是输出要求比较多。
3、检验的时候可以使用文件读入和文件输出,这样方便判别。
题目:
[align=left]Problem Description[/align]
If you ever tried to read a html document on a Macintosh, you know how hard it is if no Netscape is installed.
Now, who can forget to install a HTML browser? This is very easy because most of the times you don't need one on a MAC because there is a Acrobate Reader which is native to MAC. But if you ever need one, what do you do?
Your task is to write a small html-browser. It should only display the content of the input-file and knows only the html commands (tags) <br> which is a linebreak and <hr> which is a horizontal ruler. Then you should treat all tabulators, spaces and newlines
as one space and display the resulting text with no more than 80 characters on a line.
[align=left]Input[/align]
The input consists of a text you should display. This text consists of words and HTML tags separated by one or more spaces, tabulators or newlines.
A word is a sequence of letters, numbers and punctuation. For example, "abc,123" is one word, but "abc, 123" are two words, namely "abc," and "123". A word is always shorter than 81 characters and does not contain any '<' or '>'. All HTML tags are either <br>
or <hr>.
[align=left]Output[/align]
You should display the the resulting text using this rules:
. If you read a word in the input and the resulting line does not get longer than 80 chars, print it, else print it on a new line.
. If you read a <br> in the input, start a new line.
. If you read a <hr> in the input, start a new line unless you already are at the beginning of a line, display 80 characters of '-' and start a new line (again).
The last line is ended by a newline character.
[align=left]Sample Input[/align]
Hallo, dies ist eine
ziemlich lange Zeile, die in Html
aber nicht umgebrochen wird.
<br>
Zwei <br> <br> produzieren zwei Newlines.
Es gibt auch noch das tag <hr> was einen Trenner darstellt.
Zwei <hr> <hr> produzieren zwei Horizontal Rulers.
Achtung mehrere Leerzeichen irritieren
Html genauso wenig wie
mehrere Leerzeilen.
[align=left]Sample Output[/align]
Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zwei
produzieren zwei Newlines. Es gibt auch noch das tag
--------------------------------------------------------------------------------
was einen Trenner darstellt. Zwei
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html
genauso wenig wie mehrere Leerzeilen.
1、仔细读题,细心细心。。。。。。
2、题的几个要求:超过八十个字符换一行,<br>换行,<hr>打印一个分割线,最后打印一个新的空行。主要是输出要求比较多。
3、检验的时候可以使用文件读入和文件输出,这样方便判别。
题目:
[align=left]Problem Description[/align]
If you ever tried to read a html document on a Macintosh, you know how hard it is if no Netscape is installed.
Now, who can forget to install a HTML browser? This is very easy because most of the times you don't need one on a MAC because there is a Acrobate Reader which is native to MAC. But if you ever need one, what do you do?
Your task is to write a small html-browser. It should only display the content of the input-file and knows only the html commands (tags) <br> which is a linebreak and <hr> which is a horizontal ruler. Then you should treat all tabulators, spaces and newlines
as one space and display the resulting text with no more than 80 characters on a line.
[align=left]Input[/align]
The input consists of a text you should display. This text consists of words and HTML tags separated by one or more spaces, tabulators or newlines.
A word is a sequence of letters, numbers and punctuation. For example, "abc,123" is one word, but "abc, 123" are two words, namely "abc," and "123". A word is always shorter than 81 characters and does not contain any '<' or '>'. All HTML tags are either <br>
or <hr>.
[align=left]Output[/align]
You should display the the resulting text using this rules:
. If you read a word in the input and the resulting line does not get longer than 80 chars, print it, else print it on a new line.
. If you read a <br> in the input, start a new line.
. If you read a <hr> in the input, start a new line unless you already are at the beginning of a line, display 80 characters of '-' and start a new line (again).
The last line is ended by a newline character.
[align=left]Sample Input[/align]
Hallo, dies ist eine
ziemlich lange Zeile, die in Html
aber nicht umgebrochen wird.
<br>
Zwei <br> <br> produzieren zwei Newlines.
Es gibt auch noch das tag <hr> was einen Trenner darstellt.
Zwei <hr> <hr> produzieren zwei Horizontal Rulers.
Achtung mehrere Leerzeichen irritieren
Html genauso wenig wie
mehrere Leerzeilen.
[align=left]Sample Output[/align]
Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zwei
produzieren zwei Newlines. Es gibt auch noch das tag
--------------------------------------------------------------------------------
was einen Trenner darstellt. Zwei
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html
genauso wenig wie mehrere Leerzeilen.
#include<stdio.h> #include<iostream> #include<string> #include<cstring> using namespace std; int main() { bool first = false; //FILE *f;//注意使用文件指针 char a[90]; int leng = 0; //f = fopen("new.txt","w");//文件指针会自动向下转移不用手动 while(~scanf("%s",a)) { if(strcmp(a,"<br>") == 0)//c语言中可这样判别两个字符串是否一样,如果一样会返回0; { first = true; printf("\n"); //fprintf(f,"%c",10); leng = 0; continue; } if(strcmp(a,"<hr>") == 0) { if(leng != 0)//连续两个<br>要注意有没有多余的空行。 { printf("\n"); //fprintf(f,"%c",10); first = true; } printf("--------------------------------------------------------------------------------\n"); //fprintf(f,"%s","--------------------------------------------------------------------------------"); //fprintf(f,"%c",10); leng = 0; first = true; continue; } else { if(leng == 0) { first = false; printf("%s",a); leng += strlen(a); //for(int i=0;i<strlen(a);i++) //fprintf(f,"%c",a[i]); } else if((leng+strlen(a)+1)<=80) { printf(" %s",a); //fprintf(f,"%c",32); //for(int i=0;i<strlen(a);i++) //fprintf(f,"%c",a[i]); leng = strlen(a) + 1 + leng;//这里+1是因为有空格; } else { printf("\n%s",a); //fprintf(f,"%c",10); //for(int i=0;i<strlen(a);i++) //fprintf(f,"%c",a[i]); leng = strlen(a); first = false; } } } if(!first)//要有一个新的空行,不然PE; printf("\n"); //fclose(f);//文件指针最后要关闭 return 0; }
相关文章推荐
- HDU 1088 Write a simple HTML Browser(水题)
- HDU 1088 Write a simple HTML Browser(水题)
- hdu 1088 Write a simple HTML Browser(水题)
- HDU 1088 Write a simple HTML Browser 有点恶心的字符串题
- HDOJ/HDU 1088 Write a simple HTML Browser(HTML字符串)
- HDU 1088 Write a simple HTML Browser
- Hdu 1088 - Write a simple HTML Browser
- hdu 1088 Write a simple HTML Browser
- HDU 1088 ( Write a simple HTML Browser )
- HDU-1088-Write a simple HTML Browser
- Hdu 1088 Write a simple HTML Browser
- HDU 1088 ( Write a simple HTML Browser )
- hdu 1088 Write a simple HTML Browser
- HDU 1088 Write a simple HTML Browser
- HDU 1088 Write a simple HTML Browser && 字符串模拟
- hdu 1088 Write a simple HTML Browser (模拟)
- HDU 1088 - Write a simple HTML Browser
- hdu-1088 Write a simple HTML Browser
- hdu 1088 Write a simple HTML Browser
- HDU 1088 — Write a simple HTML Browser