Faça um programa que leia dois números Ne M :
  • Crie e leia uma matriz N times M de inteiros;
  • Crie e construa uma matriz transposta M times N de inteiros.
  • Mostre as duas matrizes.

Passo 1

A questão pede para criar um programa que leia dois inteiros N e M, depois crie uma matriz de inteiros com dimensões N×M, em seguida construa a matriz transposta de dimensões M×N e por fim mostre as duas matrizes. O conteúdo principal é manipulação de matrizes usando laços (loops) aninhados em linguagem C.

Passo 2

Primeiro, vamos ler os valores de N e M fornecidos pelo usuário. Esses serão o número de linhas e colunas da matriz original.
Depois, declaramos uma matriz bidimensional original com N linhas e M colunas, e uma matriz transposta com M linhas e N colunas.

Passo 3

Em seguida, usamos dois loops aninhados para preencher a matriz original: o loop externo percorre as linhas (índice i de 0 até N-1) e o interno percorre as colunas (índice j de 0 até M-1), lendo cada elemento.
Para construir a matriz transposta, usamos novamente dois loops aninhados. Para cada posição (i,j) da matriz original, atribuímos o valor na posição (j,i) da matriz transposta.

Passo 4

Depois de preencher as duas matrizes, imprimimos primeiro a matriz original, linha a linha, e depois a matriz transposta, também linha a linha.
Assim teremos lido, construído e mostrado as matrizes conforme pedido.

Resposta

#include <stdio.h>
#include <stdlib.h>
int main() {
int N, M;
// Leitura de N e M
printf(“Digite N (linhas) e M (colunas): “);
scanf(”%d %d”, &N, &M);
// Alocação das matrizes
int original[N][M];
int transposta[M][N];

// Leitura da matriz original
printf("Digite os elementos da matriz %dx%d:\n", N, M);
for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
        scanf("%d", &original[i][j]);
    }
}

// Construção da matriz transposta
for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
        transposta[j][i] = original[i][j];
    }
}

// Impressão da matriz original
printf("Matriz original (%dx%d):\n", N, M);
for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
        printf("%d ", original[i][j]);
    }
    printf("\n");
}

// Impressão da matriz transposta
printf("Matriz transposta (%dx%d):\n", M, N);
for (int i = 0; i < M; i++) {
    for (int j = 0; j < N; j++) {
        printf("%d ", transposta[i][j]);
    }
    printf("\n");
}

return 0;
}

Exercícios relacionados