Como rotacionar uma matriz em C?

Olá, é possível rotacionar uma matriz quadrada em C, uma posição pro lado?
Deve ser possível rotacionar quantas vezes for necessário…
Exemplo nas fotos:
Z6cuN
y01Y3
HIB9D

Sim, é possível.

Sabe me dizer como posso fazer isso?

Primeira coisa, pega papel e lápis. Desenhe a primeira matriz. Para cada elemento, coloque a posição dele, ou seja, na primeira linha vc tem a na linha 0, coluna 0, b na linha 0, coluna 1, c na linha 0 coluna 2 e assim por diante. Faça o mesmo para a segunda matriz.

Você perceberá que o a que está na linha 0, coluna 0 da primeira matriz foi para a coluna 1 da mesma linha. Veja o desenho abaixo (que é o que eu seu professor espera que vc pense).

image

As flechas verdes indicam a movimentação (o b do centro não se mexe). O a destacado em roxo é uma das 8 movimentações que vc precisará fazer.

Agora, basta traduzir isso para a linguagem C. Comece a fazer e se enroscar, mostre seu código e traga dúvidas pontuais. Ninguém vai fazer para vc.

2 curtidas

Olá tentei fazer isso em uma matriz 7x7. Porém tentei de varias formas, esta dando erro, algumas linhas/colunas não se andam, ou simplesmente some o caractere, ou o caractere é apenas duplicado…

fiz um for assim pra ir girando:

    for(i = 0; i < 7; i++){
        for(j = 0; j < 7; j++){
            matriz2[i][j] = matriz[i][j];
        }
    }

    for(i = 0; i < 7; i++){
        for(j = 0; j < 7; j++){
            
            if(i == 6){
                matriz2[i][j+1] = matriz[i][j];
            }
            if(j == 0){
                matriz2[i+1][j] = matriz[i][j];
            }
        
            if(i == 0){
                matriz2[i][j-1] = matriz[i][j];
            }
            if(j == 6){
                matriz2[i-1][j] = matriz[i][j];
            }      
        }
    }