无法进行旋转 得到预期结果
不知道是调用函数的问题还是无法进入for循环的问题
你要把源代码贴出来还能调试一下。另外图中的输入输出样例也贴出来
代码已修改,代码里显示的时候都是用的小写字母v,如果结果不对你换成大写字母V试试。(就是在=后面的‘v' 用小写和大写'V'都试试,我看不出来题目里的是小写还是大写)
#include <iostream>
using namespace std;
void print(char** p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << (char)p[i][j];
cout << endl;
}
}
//逆时针旋转90度
void roate_left(char** p, int n)
{
int i, j;
char t;
char** q;
q = new char* [n];
for (i = 0; i < n; i++)
q[i] = new char[n];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (p[i][j] == '<')
q[n - 1 - j][i] = 'v';
else if (p[i][j] == 'v' || p[i][j] == 'V')
q[n - 1 - j][i] = '>';
else if (p[i][j] == '>')
q[n - 1 - j][i] = '^';
else if (p[i][j] == '^')
q[n - 1 - j][i] = '<';
else
q[n - 1 - j][i] = p[i][j];
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
p[i][j] = q[i][j];
}
}
for (i = 0; i < n; i++)
{
delete[] q[i];
q[i] = 0;
}
delete[] q;
q = 0;
}
//顺时针旋转90度
void roate_right(char** p, int n)
{
int i, j;
char t;
char** q;
q = new char* [n];
for (i = 0; i < n; i++)
q[i] = new char[n];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (p[i][j] == '>')
q[j][n - 1 - i] = 'v';
else if (p[i][j] == '<')
q[j][n - 1 - i] = '^';
else if (p[i][j] == 'v' || p[i][j] == 'V')
q[j][n - 1 - i] = '<';
else if (p[i][j] == '^')
q[j][n - 1 - i] = '>';
else
q[j][n - 1 - i] = p[i][j];
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
p[i][j] = q[i][j];
}
}
for (i = 0; i < n; i++)
{
delete[] q[i];
q[i] = 0;
}
delete[] q;
q = 0;
}
int main()
{
int n, i;
char opera[10] = { 0 };
char** p;
cin >> n >> opera;
p = new char* [n];
for (i = 0; i < n; i++)
{
p[i] = new char[n + 1];
cin >> p[i];
}
for (i = 0; opera[i] != '\0'; i++)
{
if (opera[i] == 'L')
roate_left(p, n);
else if (opera[i] == 'R')
roate_right(p, n);
}
print(p, n);
return 0;
}