Questão 3

Ainda não respondida Vale 1,00 ponto(s). □ Marcar questão
Construa um programa em LINGUAGEM C que crie receba uma matriz 2 \times 3 com dados inteiros informados pelo usuário e mostre a matriz original e depois mostre a matriz transposta na tela.

Passo 1

O enunciado pede que se faça um programa em LINGUAGEM C que:
  • receba do usuário uma matriz de inteiros com dimensões 2\times3;
  • mostre na tela a matriz original;
  • mostre na tela a matriz transposta dessa matriz original.
Informações relevantes do enunciado:
  • Dimensões da matriz original: 2\times3.
  • Tipo de dados: inteiros.
  • Deve-se exibir primeiro a matriz original e depois a transposta.
  • Não há restrição sobre formato de leitura (cada elemento pode ser lido um a um).

Passo 2

O que é transpor uma matriz (explicação didática e simples):
  • Seja uma matriz A de dimensões 2\times3. Isso significa que A tem 2 linhas e 3 colunas.
  • A transposta de A, denotada por A^{T}, é uma matriz onde linhas viram colunas e colunas viram linhas. Logo, A^{T} terá dimensões 3\times2.
  • Em termos de índices: se A tem elemento na linha i e coluna j, então esse elemento aparece em A^{T} na linha j e coluna i. Escrito:
A^{T}[j][i] = A[i][j]
  • Em C usamos índices começando em 0. Assim, para i variando de 0 a 1 (duas linhas) e j variando de 0 a 2 (três colunas) aplicamos a mesma regra com índices baseados em zero.

Passo 3

Decisão de implementação (por que e como):
  • Forma simples e segura: usar um array bidimensional para a matriz original e outro para a transposta.
  • Em C: declarar \verb|int A[2][3];| para a original e \verb|int T[3][2];| para a transposta.
  • Alternativa possível (sem array extra): imprimir a transposta diretamente acessando \verb|A[i][j]| com ordem invertida. Mas usaremos o array \verb|T| para ficar claro e evitar confusão em prova.

Passo 4

Estrutura geral do programa (passo a passo do que o programa fará):
  1. Incluir a biblioteca padrão de entrada/saída: \verb|#include <stdio.h>|.
  2. Declarar \verb|int main(void)| como função principal.
  3. Declarar as variáveis e os arrays: \verb|int A[2][3], T[3][2]; int i, j;|.
  4. Ler cada elemento da matriz original com dois loops \verb|for| aninhados: \verb|for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&A[i][j]);|.
  5. Preencher a matriz transposta com a regra \verb|T[j][i] = A[i][j];| usando novamente dois loops.
  6. Imprimir a matriz original com formatação em linhas e colunas.
  7. Imprimir a matriz transposta com formatação em linhas e colunas.
  8. Retornar \verb|0| ao final.

Passo 5

Explicação detalhada das partes importantes do código (linha a linha, didaticamente):
  • \verb|#include <stdio.h>|: permite usar \verb|printf| e \verb|scanf|.
  • \verb|int A[2][3], T[3][2];|: cria a memória para armazenar a matriz original 2\times3 e a transposta 3\times2.
  • \verb|int i, j;|: índices dos loops; aqui i e j seguirão a convenção de linha/coluna.
  • Leitura com \verb|scanf("%d",&A[i][j]);|: lê um inteiro e armazena em \verb|A[i][j]|. É importante passar o endereço com \verb|&|.
  • Para transpor: ao percorrer \verb|i| de 0 a 1 e \verb|j| de 0 a 2, a atribuição \verb|T[j][i] = A[i][j];| copia cada elemento para a posição trocada.
  • Impressão: dois loops aninhados, \verb|printf("%d\t", A[i][j]);| para imprimir elemento por elemento com separação por tabulação ou espaço; no fim de cada linha usar \verb|printf("\n");| para pular linha.
  • Observação sobre índices: em notação matemática usamos i=1,2 e j=1,2,3, mas em C será i=0,1 e j=0,1,2. Essa diferença é comum e não anula a regra de transposição.

Passo 6

Exemplo de como será a interação (rápido walkthrough):
  • O programa pede os elementos (pode pedir um por vez dizendo a posição).
  • Se o usuário digitar, por exemplo, os números na ordem:
\begin{matrix} 1 & 2 & 3\\\\ 4 & 5 & 6 \end{matrix}
  • A saída exibirá primeiro a matriz original exatamente nessa forma e depois a transposta:
\begin{matrix} 1 & 2 & 3\\\\ 4 & 5 & 6 \end{matrix}
e
\begin{matrix} 1 & 4\\\\ 2 & 5\\\\ 3 & 6 \end{matrix}

Passo 7

Dicas rápidas para a prova (erros comuns e como evitá-los):
  • Lembre-se da indexação em C que começa em 0.
  • Não esqueça de usar \verb|&| em \verb|scanf|.
  • Tenha atenção nas dimensões ao declarar os arrays: a transposta troca as dimensões.
  • Teste mentalmente com um exemplo pequeno (como o mostrado) para garantir que os loops e as atribuições estejam na ordem correta.

Resposta

#include <stdio.h>
int main(void) {
int A[2][3], T[3][2];
int i, j;
printf("Entre com os elementos da matriz 2x3 (linhas então colunas):\n");
for (i = 0; i < 2; i++) {
    for (j = 0; j < 3; j++) {
        printf("A[%d][%d] = ", i, j);
        if (scanf("%d", &A[i][j]) != 1) return 1;
    }
}

/* Calcula a transposta */
for (i = 0; i < 2; i++) {
    for (j = 0; j < 3; j++) {
        T[j][i] = A[i][j];
    }
}

/* Mostra a matriz original */
printf("\nMatriz original (2x3):\n");
for (i = 0; i < 2; i++) {
    for (j = 0; j < 3; j++) {
        printf("%d\t", A[i][j]);
    }
    printf("\n");
}

/* Mostra a matriz transposta */
printf("\nMatriz transposta (3x2):\n");
for (i = 0; i < 3; i++) {
    for (j = 0; j < 2; j++) {
        printf("%d\t", T[i][j]);
    }
    printf("\n");
}

return 0;
}

Exercícios relacionados