Faça um programa que leia dois números Ne M :
- Crie e leia uma matriz
de inteiros;
- Crie e construa uma matriz transposta
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.
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.
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.
Assim teremos lido, construído e mostrado as matrizes conforme pedido.
Resposta
#include <stdio.h>
#include <stdlib.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);
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;
}