Estrutura de Dados Homogênea (Matriz)
0
0

Estrutura de Dados Homogênea (Matriz)

Como no exemplo acima, para declarar a matriz 2x5, fazemos: int Mat[2][5];

Grey
2 min
0
0
  • As matrizes são estruturas de dados que possuem mais de uma dimensão (vetor). Diferentemente dos vetores que precisam de apenas um índice para acesso aos elementos, as matrizes necessitam utilizar um índice para cada dimensão.
  • Aqui, apenas apresentaremos as Matrizes bidimensionais, isto é, são matrizes onde seus elementos estão dispostos por linhas e colunas.

Como no exemplo acima, para declarar a matriz 2x5, fazemos: int Mat[2][5];

  • Note que temos duas linhas: Mat[0][] e Mat[1][], e em cada linha dessa temos 5 elementos. Ou seja, é uma matriz de duas linhas e cinco colunas. Sempre o primeiro número é a linha e o segundo é a coluna.

Declaração de Matrizes

int Matriz[6][2];
float Matriz[5][3];
char Matriz[2][10]

Inicializar uma Matriz

  • Para inicializar uma Matriz, isto é, mover valores para todos os elementos precisamos de duas estrutura de repetição encadeadas. Uma estrutura de repetição FOR para percorrer as linhas da Matriz e outra para percorrer as colunas.
  • Por exemplo, mover o valor 100 para todas as posições de uma matriz do tipo int com 2 linhas e 5 colunas.
for(i = 0; i < 2; i++)
{
for(j = 0; j < 5; j++)
{
vet[i][j] = 100;
}
}

Inicializar uma Matriz

  • Semelhantemente aos vetores podemos inicializar as matrizes no momento da declaração, para isso devemos colocar cada linha entre chaves {}, e separar elas por vírgulas, veja:

int Mat[2][5] = { {100, 90, 80, 70, 60 }, {200, 190, 180, 170, 160 } };

Exemplo

Percorrer a matriz Mat (3 x 3) contendo números inteiros e transformar, caso existam, os números negativos em positivos.

#include<stdio.h>
int main() {
int i, j;
int mat[3][3] = {{2, -4, 5},{-8, -1, 7},{-3, -6, 9}};
for(i=0; i < 3; i++)
{
for(j=0; j < 3; j++)
{
if (mat[i][j]< 0)
{
mat[i][j] = mat[i][j] * -1;
}
}
}
for(i=0; i < 3; i++)
{
for(j=0; j < 3; j++)
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
  • Semelhantemente aos vetores, podemos também mover valores para as matrizes através do comando de leitura(scanf).
for(i = 0; i < 2; i++)
{
for(j = 0; j < 5; j++)
{
scanf("%d", &vet[i][j]);
}
}

Exercicio 1

Dada a Matriz A = {{10, 30, 50}, {5, 15, 25}, {2, 5, 9}} e a Matriz B= {{5, 35, 70}, {1, 25, 30}, {1, 4, 7}}, faça um programa que gere a Matriz C contendo os maiores valores de cada posição. Mostre a Matriz C.

#include<stdio.h>
int main(){
int A[3][3] = {{10, 30, 50}, {5, 15, 25}, {2, 5, 9}};
int B[3][3] ={{5, 35, 70}, {1, 25, 30}, {1, 4, 7}};
int C[3][3], i, j;
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
if (A[i][j] > B[i][j]) {
C[i][j] = A[i][j];
}
else {
C[i][j] = B[i][j];
}
}
}
printf("\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
printf("%d ",C[i][j]);
}
printf("\n");
}
}

Exercicio 2

Faça programa que leia uma matriz 4 x 4 com valores reais.

(a) Imprima a soma de todos os elementos das colunas ímpares.

(b) Imprima a media aritmética dos elementos das colunas pares.

(d) Imprima os resultados.

#include<stdio.h>
int main(){
float A[4][4];
int i, j, cont;
float somapar, somaimpar;
float media;
somaimpar = 0;
somapar = 0;
cont = 0;
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
printf("\nDigite um numero inteiro: ");
scanf("%f", &A[i][j]);
}
}
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
if (j % 2 == 0) {
somapar= somapar + A[i][j];
cont = cont + 1;
}
else {
somaimpar = somaimpar + A[i][j];
}
}
}
media = somaimpar/cont;
printf("\nA soma dos valores das colunas impares e %f", somaimpar);
printf("\nA media dos valores das colunas pares e %f", media);
}