Desenvolva a função print_m que imprime uma matriz na tela. A função recebe como parâmetros o valor
que é um número inteiro correspondente à quantidade de linhas (ou de colunas) de uma matriz quadrada e mat[n][n] uma matriz
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] ) {
}
void print_m( int n, float mat[n][n] ) {
}Passo 1
O enunciado pede que eu implemente a função abaixo em C:
As informações relevantes que o enunciado dá:
-
é um inteiro que representa o número de linhas (e colunas) de uma matriz quadrada. -
é uma matriz 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
de até . - Para cada linha, percorrer todas as colunas
de até . - Para cada elemento
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á
e varia como . Em C isso é escrito geralmente como for (int i = 0; i < n; ++i). - O índice de coluna será
e varia como . Em C: for (int j = 0; j < n; ++j). - Para cada par
acessamos o elemento como mat[i][j].
Explicando por que começam em zero: em C os índices de arrays começam em, então a primeira posição é e a última é .
Passo 4
Como usar
printf com a máscara "%6.2f":"%6.2f"significa: campo mínimo de larguracaracteres e exatamente casas decimais. - Ex.: o número
será impresso como (dois espaços à esquerda para completar largura 6). - Ex.: o número
será impresso como (arredondando para 2 casas).
- Ex.: o número
- Em C, quando passamos um valor do tipo
floatpara uma função variádica comoprintf, ele é promovido paradoubleautomaticamente — então não precisamos fazer cast explícito.
Portanto, a instrução de impressão do elemento será:
Passo 5
Quebra de linha ao fim de cada linha da matriz:
- Depois de imprimir todos os
elementos da linha , 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ã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 useprintfvocê 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
e . - Saída esperada (cada número com
%6.2f), algo como:
(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");
}
}