UVa--Rotating Sentences

Rotating Sentences 

In ``Rotating Sentences,'' you are asked to rotate a series of input sentences 90 degrees clockwise. So instead of displaying the input sentences from left to right and top to bottom, your program will display them from top to bottom and right to left.

Input and Output

As input to your program, you will be given a maximum of 100 sentences, each not exceeding 100 characters long. Legal characters include: newline, space, any punctuation characters, digits, and lower case or upper case English letters. (NOTE: Tabs are not legal characters.)

The output of the program should have the last sentence printed out vertically in the leftmost column; the first sentence of the input would subsequently end up at the rightmost column.

Sample Input

Rene Decartes once said,
"I think, therefore I am."

Sample Output

"R
Ie
 n
te
h 
iD
ne
kc
,a
 r
tt
he
es
r
eo
fn
oc
re
e
 s
Ia
 i
ad
m,
.
"
解析:最近看劉汝佳的算法入門,上面的配套習題是UVa Online Judge上面的習題,所以就嘗試的做了做,自我感覺上面的題不適合入門,首先感覺讀題上面有點困難,可能是因爲自己英語太水了,其次感覺題目說的不清不楚的,比如這道有兩個易錯點,
首先,當某行的字數長度不夠時要輸出空格,但是題目中並未找到說明哈
然後,就是提示的格式錯誤,最後一行一定要輸出回車,不知道因爲這wa了多少
除了這,剩下的就是水題了哈!
#include <iostream>
#include <string>
using std::endl;
using std::cin;
using std::cout;
using std::string;
int main()
{
#ifdef LOCAL
	freopen("input.txt" , "r" , stdin);
	freopen("output.txt" , "w" , stdout);
#endif
	string str[105];
	int i=0 , maxlength = 0;
	while(getline(cin , str[i]))
	{
		int length = str[i].length();
		if(length > maxlength)
			maxlength = length;
		if(length == 0)
			break;
		i++;
	}
	for(int k=0;k<maxlength;++k)
	{
		for(int j=i-1;j>=0;--j)
		{
			if(k<str[j].length())
				cout << str[j][k];
			else
				//如果某行長度不夠補齊空格
				cout << ' ';
		}
		//最後一行輸出換行符
		cout << endl;
	}
	return 0; 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章