Voltar Lista de Tópicos

Editar | Versões | Fórum de Discussão

Prazos para Envio


Matrizes

Introdução

Enquanto vetores possuem apenas uma dimensão, matrizes são estruturas que possuem duas ou mais dimensões. Por exemplo, a figura abaixo representa uma matriz 2X4 de temperaturas médias para 4 semanas ao longo de 2 meses.

Declarando Matrizes

Abra o Dev C++ e faça os passos abaixo:

  1. Acrescente as bibliotecas padrão e a função principal;
  2. Salve o arquivo com nome "exemplo1_matrizes"
  3. Faça os passos abaixo:

Para declarar uma matriz como a da introdução, ao invés de declarar apenas uma dimensão, como nos vetores, declaramos duas dimensões:

#include <stdio.h>
int main()
{
     float matrizTemp[2][4]; //declara uma Matriz 2X4 de floats
     return 0;
}

Inicialize os valores da matriz com o seguinte o código na declaração:

#include <stdio.h>
int main()
{
     float matrizTemp[2][4] = {30.0, 32.0, 25.4, 27.12, 32.3, 31.0, 23.6, 15.4}; //declara e inicializa uma Matriz 2X4 de floats
     return 0;
}

Acessando Posições em Matrizes

Para acessar os valores de uma matriz precisamos de dois índices, um para a linha e outro para a coluna usando o seguinte padrão:

matriz[i][j]

Onde matriz é o nome da variável tipo matriz, i é o índice da linha e j é o índice da coluna. Vamos imprimir cada posição da matriz acima:

Acrescente as linhas abaixo após a declaração da matriz:

printf("-----------TEMPERATURAS REGISTRADAS EM JANEIRO E FEVEREIRO---------------\n");
printf("-----JANEIRO-----\n");
printf("Semana 1 de Janeiro: %.2f\n", matrizTemp[0][0]);
printf("Semana 2 de Janeiro: %.2f\n", matrizTemp[0][1]);
printf("Semana 3 de Janeiro: %.2f\n", matrizTemp[0][2]);
printf("Semana 4 de Janeiro: %.2f\n", matrizTemp[0][3]);

printf("------FEVEREIRO------\n");
printf("Semana 1 de Fevereiro: %.2f\n", matrizTemp[1][0]);
printf("Semana 2 de Fevereiro: %.2f\n", matrizTemp[1][1]);
printf("Semana 3 de Fevereiro: %.2f\n", matrizTemp[1][2]);
printf("Semana 4 de Fevereiro: %.2f\n", matrizTemp[1][3]);

Como as temperaturas das semanas de Janeiro estão na primeira linha da matriz, utilizamos o índice 0 na posição da linha e variamos as posições da coluna de 0 até 3. Do mesmo modo acessamos as posições das temperaturas de Fevereiro.

Usando Estruturas de Repetição

Repare que no código acima, o conando printf se repete mudando apenas os índices da matriz que serão acessados. Podemos reduzir a quantidade de printf usando um laço For. Faça os passos abaixo:

  • Declare duas variáveis inteiras, uma referente ao índice da linha e outra referente ao índice da coluna:
int i, j;
  • Começando pela coluna, substitua as linhas que contém os printf pelo código abaixo e execute:
printf("-----------TEMPERATURAS REGISTRADAS EM JANEIRO E FEVEREIRO---------------\n");

printf("-----JANEIRO-----\n");
for (j = 0; j < 4; j++)
{
    printf("Semana %d de Janeiro: %.2f\n", j, matrizTemp[0][j]);

}
printf("------FEVEREIRO------\n");
for (j = 0; j < 4; j++)
{
    printf("Semana 1 de Janeiro: %.2f\n", j, matrizTemp[1][j]);

}

Repare que substuímos 4 printf para cada mês por apenas 1 utilizando um laço for e a variável j para servir como índice das colunas:

matriz[0][j] e matriz[1][j] 

Repare também que o laço For se repete duas vezes. Existe um For para cada linha da matriz. Desse modo podemos colocar o For que controla as colunas dentro outro For que irá controlar as linhas. Substitua o código acima pelo seguinte código:

printf("-----------TEMPERATURAS REGISTRADAS EM JANEIRO E FEVEREIRO---------------\n");

for (i = 0; i< 2; i++){
    for (j = 0; j < 4; j++)
    {
        printf("Semana %d do mês %d: %.2f\n", j + 1, i + 1, matrizTemp[i][j]);
          
    }
}

Podemos traduzir o código acima na seguinte frase: 

"Para cada linha i da matriz, percorra todas as colunas j e imprima os valores na tela"

Repare que o For mais externo controla movimentação nas linhas da matriz e o For mais interno controla a movimentação das colunas.  A figura abaixo ilustra as partes do código acima.

Entrada de Dados

Para fazer a entrada de dados, utilizamos uma estrutura parecida com a que usamos para imprimir o conteúdo da matriz. Adicione o código abaixo logo após a declaração das variáveis:


for (i = 0; i< 2; i++){
    printf("Temperaturas do més %d: \n", i + 1); //Apresenta o índice do mês na tela
    for (j = 0; j < 4; j++)
    {
        printf("    Informe a temperatura média da semana %d: ", j + 1); // mostra a semana
        scanf("%f", &matrizTemp[i][j]); //armazena a informação na matriz posição i,j
          
    }
}

Remova os valores da inicialização da variável matrizTemp e execute o código. 


Questões

Questão 1
Questão 2
Questão 3
Questão 4
Questão 5

Comentários...

Não há comentários ainda... Seja o primeiro!