タイトルリピート
「フー」スティック後方、意味「に祝福を。」エンド・カウント・フォーク、この問題のかどうか、プログラムを書くためにあなたを求める、様々な文字逆さま出力ダウン。各文字は、N×N、グリッド要素または@文字またはスペースからなるグリッドによって処理されるところ。指定された審判で使用される文字逆さ文字。
入力フォーマット:
最初の行に与えられた入力文字に使用する文字を反転し、及びN(正の整数は100を超えない)メッシュサイズは、隙間によって分離され、次いで、N行、各行はN個の文字が与えられます、または@またはスペースなど。
出力フォーマット:
サンプルに示すように、出力グリッド反転。しかし、言葉はこの秋に来ている場合は、最初の出力には、過去と同じでありbu yong dao le
、その後、文字指定された出力を入力してください。
サンプル入力1:
$ 9
@ @@@@@
@@@ @@@
@ @ @
@@@ @@@
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
@ @ @ @
@ @@@@@
出力サンプル1:
$$$$$ $
$ $ $ $
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
$$$ $$$
$ $ $
$$$ $$$
$$$$$ $
サンプル入力2:
& 3
@@@
@
@@@
出力サンプル2:
bu yong dao le
&&&
&
&&&
問題の解決策
この質問は難しくありませんが、ノートに場所が必要です
- アイデアは、言葉と入出力関係の単語間の関係を見つけることです入力された場合ということです
[i][j]
、出力位置があります[n-i-1][n-j-1]
- 私は、入力文字の入力とgetlineはCIN、CINを使用し、nは、CINはキャリッジリターンを受信したときに、すべての問題と、それが入力を受け取るに注意を払う必要がありますが、送料は、バッファ内にまだバッファ意志、その後のgetlineであります私たちはCINとgetlienの間で追加することができますので、間違った出力が得られ、中に食べて入力し
cin.ignore()
てください解消する方法。
100 ++と
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int store[105][105];
int arr[105][105];
char a,tmp;
int n;
cin>>a>>n;
string str="";
cin.ignore();
for(int i=0; i<n; i++)
{
getline(cin,str);
for(int j=0; j<n; j++)
{
if(str[j]=='@')
{
store[i][j]=1;
arr[n-i-1][n-j-1]=1;
}
else
{
store[i][j]=0;
arr[n-i-1][n-j-1]=0;
}
}
}
bool flag=true;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(store[i][j]!=arr[i][j])
{
flag=false;//如果有不一样的地方
}
}
}
if(flag)//如果没有不一样的地方,需额外输出
{
cout<<"bu yong dao le"<<endl;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(arr[i][j]==1)
{
cout<<a;
}
else
{
cout<<' ';
}
}
cout<<endl;
}
return 0;
}