that_one_nigga_you_k

rotação de matruz só com vetor

Nov 22nd, 2023
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.83 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main() {
  5.     int linhas, colunas;
  6.  
  7.     printf("Digite quantas linhas e colunas a matriz tem: ");
  8.     scanf("%d %d", &linhas, &colunas);
  9.  
  10.     int matriz[linhas * colunas];
  11.     int matrizrodada[linhas * colunas];
  12.     int matrizantirodada[linhas * colunas];
  13.     int contador = 0;
  14.  
  15.     for (int i = 0; i < linhas * colunas; i++) {
  16.         matriz[i] = i+1;
  17.     }
  18.  
  19.     printf("Matriz original:\n");
  20.     for (int i = 0; i < linhas * colunas; i++) {
  21.         if ((i + 1) % colunas == 0) {
  22.             printf("%d \n", matriz[i]);
  23.         } else {
  24.             printf("%d ", matriz[i]);
  25.         }
  26.     }
  27.  
  28.     /* Aqui eu rotaciono a matriz usando uma matriz nova */
  29.     for (int i = 0; i < linhas * colunas; i++) {
  30.         int linha = i / colunas;  // Pego uma linha inteira
  31.         int coluna = i % colunas; // Pego uma coluna inteira
  32.  
  33.         int novalinha = coluna;
  34.         int novacoluna = linhas - 1 - linha;
  35.  
  36.         matrizrodada[novalinha * linhas + novacoluna] = matriz[i];
  37.     }
  38.    
  39.     for (int i = 0; i < linhas * colunas; i++) {
  40.         int linha = i / colunas;  // Pego uma linha inteira
  41.         int coluna = i % colunas; // Pego uma coluna inteira
  42.  
  43.         int novalinha = linhas - 1 - coluna;
  44.         int novacoluna = linha;
  45.  
  46.         matrizantirodada[novalinha * colunas + novacoluna] = matriz[i];
  47. }
  48.  
  49.  
  50.     printf("\n\nMatriz rotacionada:\n");
  51.     for (int i = 0; i < colunas; i++) {
  52.         for (int j = 0; j < linhas; j++) {
  53.             printf("%d ", matrizrodada[i * linhas + j]);
  54.         }
  55.         printf("\n");
  56.     }
  57.  
  58.     printf("\n\nMatriz rotacionada:\n");
  59.     for (int i = 0; i < colunas; i++) {
  60.         for (int j = 0; j < linhas; j++) {
  61.             printf("%d ", matrizantirodada[i * linhas + j]);
  62.         }
  63.         printf("\n");
  64.     }
  65.  
  66.     return 0;
  67. }
  68.  
Add Comment
Please, Sign In to add comment