Desenvolva a função print_m que imprime uma matriz na tela. A função recebe como parâmetros o valor \mathbf{n} que é um número inteiro correspondente à quantidade de linhas (ou de colunas) de uma matriz quadrada e mat[n][n] uma matriz \mathbf{n} \times \mathbf{n} cujos elementos são números com casa decimal. Utilize a máscara “%6.2f” para formatar a exibição dos números da matriz.
void print_m( int n, float mat[n][n] ) {
}

Passo 1

O enunciado pede que eu implemente a função abaixo em C:
\texttt{void print\_m( int n, float mat[n][n] ) \{}
\texttt{\}}
As informações relevantes que o enunciado dá:
  • \,n é um inteiro que representa o número de linhas (e colunas) de uma matriz quadrada.
  • \texttt{mat} é uma matriz \,n\times n cujos elementos são números com casa decimal (tipo float).
  • A exibição de cada número deve usar a máscara "%6.2f" (campo com largura 6 e 2 casas decimais).
  • A função deve imprimir a matriz na tela (um formato natural é uma linha de saída por linha da matriz).

Passo 2

O que a função precisa fazer, em palavras simples:
  • Percorrer todas as linhas \,i de 0 até n-1.
  • Para cada linha, percorrer todas as colunas \,j de 0 até n-1.
  • Para cada elemento \texttt{mat[i][j]} imprimir com "%6.2f".
  • Após imprimir todos os elementos de uma linha, imprimir uma quebra de linha para passar para a próxima linha da matriz.
    Isto vai apresentar a matriz em formato de tabela: cada linha da matriz vira uma linha de texto.

Passo 3

Estrutura escolhida em C: dois laços for aninhados (nested loops). Detalhes didáticos:
  • O índice de linha será i e varia como i = 0,\dots,n-1. Em C isso é escrito geralmente como for (int i = 0; i < n; ++i).
  • O índice de coluna será j e varia como j = 0,\dots,n-1. Em C: for (int j = 0; j < n; ++j).
  • Para cada par (i,j) acessamos o elemento como mat[i][j].
    Explicando por que começam em zero: em C os índices de arrays começam em \,0, então a primeira posição é \,0 e a última é \,n-1.

Passo 4

Como usar printf com a máscara "%6.2f":
  • "%6.2f" significa: campo mínimo de largura \,6 caracteres e exatamente \,2 casas decimais.
    • Ex.: o número \,3.5 será impresso como \,\texttt{" 3.50"} (dois espaços à esquerda para completar largura 6).
    • Ex.: o número \,123.456 será impresso como \,\texttt{"123.46"} (arredondando para 2 casas).
  • Em C, quando passamos um valor do tipo float para uma função variádica como printf, ele é promovido para double automaticamente — então não precisamos fazer cast explícito.
    Portanto, a instrução de impressão do elemento será:
\texttt{printf("%6.2f", mat[i][j]);}

Passo 5

Quebra de linha ao fim de cada linha da matriz:
  • Depois de imprimir todos os \,n elementos da linha i, chamar printf("\ n"); para começar uma nova linha no terminal.
  • Sem essa quebra, todos os elementos de todas as linhas apareceriam na mesma linha de saída.

Passo 6

Detalhes práticos e robustez:
  • Se \,n \le 0 não há nada para imprimir; podemos checar e retornar imediatamente: if (n <= 0) return;.
  • Não é preciso incluir <stdio.h> dentro da função, mas para compilar um programa completo que use printf você deve incluir #include <stdio.h> no arquivo.
  • O corpo da função fica pequeno e rápido de escrever na prova: dois loops e duas chamadas a printf (uma para cada elemento e uma para a quebra de linha por linha).

Passo 7

Exemplo rápido (mental) para ver o formato:
  • Suponha \,n=2 e \texttt{mat} = \begin{pmatrix}1 & 2.345 \\\\ -3.2 & 10\end{pmatrix}.
  • Saída esperada (cada número com %6.2f), algo como:
\texttt{" 1.00 2.35"}
\texttt{" -3.20 10.00"}
(repare nos alinhamentos e arredondamentos).

Passo 8

Agora juntando tudo: implementação completa da função seguindo o que expliquei acima.

Resposta

void print_m( int n, float mat[n][n] ) {
    if (n <= 0) return;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            printf("%6.2f", mat[i][j]);
        }
        printf("\n");
    }
}

Exercícios relacionados