关于#c++#的问题,请各位专家解答!

无法进行旋转 得到预期结果

img

不知道是调用函数的问题还是无法进入for循环的问题

img

img

你要把源代码贴出来还能调试一下。另外图中的输入输出样例也贴出来

代码已修改,代码里显示的时候都是用的小写字母v,如果结果不对你换成大写字母V试试。(就是在=后面的‘v' 用小写和大写'V'都试试,我看不出来题目里的是小写还是大写)

img

#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;
}