Matrizes

 Vamos recordar alguns aspectos do uso e aplicações de matrizes.

A maioria dos algoritmos usa repetições encadeadas, sendo que uma varia o índice de linha e a outra varia o índice de coluna para acessar todos os elementos da matriz.

Exemplos:

1) Soma de Matrizes

#include<stdio.h>
void somaMatriz(int L, int C, int A[L][C], int B[L][C], int SOMA[L][C])
{ int l, c;
for(l=0; l<L; l++)
{ for(c=0; c<C; c++)
{ SOMA[l][c] = A[l][c] + B[l][c]; 
}
}
}
void mostraMatriz(int L, int C, int M[L][C])
{ int l, c;
for(l=0; l<L; l++)
{ for(c=0; c<C; c++)
{ printf( "%d\t", M[l][c]);
}
printf("\n");
}
}
int main()
{ int A[2][2] = {{0, -1}, {2, -3}};
int B[2][2] = {{6, 7}, {9, 4}};
int SOMA[2][2];
somaMatriz(2, 2, A, B, SOMA);
mostraMatriz(2, 2, SOMA);
return 0;
}


2) Calcule a soma dos elementos na Diagonal Principal

#include<stdio.h>
int somaDiagPrincipal(int L, int C, int M[L][C])
{ if(L != C) return 0;
int i, soma = 0;
for(i=0; i<L; i++)
{ soma = soma + M[i][i];
}
return soma; 
}
int main()
{ int A[4][4] = {{3, 6, 4, 2}, {1, 2, 3, 4}, {0, 6, 9, -1}, {2, 4, 5, 8}};
printf("\nA soma da diagonal principal vale %d\n", somaDiagPrincipal(4, 4, A));
return 0;
}

3) Calcule a soma dos elementos acima da Diagonal Principal

#include<stdio.h>
int somaAcimaDiagPrincipal(int L, int C, int M[L][C])
{ if(L != C) return 0;
int l, c, soma = 0;
for(l=0; l<L; l++)
{ for(c=0; c<C; c++)
{ if( c > l )
soma = soma + M[ l ][ c ];
}
}
return soma;
}
int main()
{ int A[4][4] ={{3, 6, 4, 2},
{1, 2, 3, 4},
{0, 6, 9, -1},
{2, 4, 5, 8}};
printf("\nA soma acima da diagonal principal vale %d\n", somaAcimaDiagPrincipal(4, 4, A));
return 0;
}

4) Procura de um elemento dentro da matriz

#include<stdio.h>
#include<stdbool.h>
void busca(int L, int C, int mat[L][C], int procurado)
{ int x, y;
bool achei = false;
for(x=0; x<L; x++)
{ for(y=0; y<C; y++)
{ if( mat[x][y] == procurado)
{ printf("O valor %d existe na linha %d e coluna %d\n", procurado, x, y);
achei = true;
}
}
}
if(!achei) printf("O valor %d não existe na matriz\n", procurado);
}
int main()
{ int A[4][4] = {{3, 6, 4, 2},
{1, 2, 3, 4},
{0, 6, 9, 5},
{2, 4, 5, 8}};
busca(4, 4, A, 5);
return 0;
}

5) Calcule a maior soma dos elementos dentre as linhas e as colunas de uma matriz (você pode encontrar um contexto divertido para este exercício aqui).

#include<stdio.h>
int main()
{ int L, C, l, c, soma, maior;
scanf("%d%d", &L, &C);
int mat[L][C];
for(l=0; l<L; l++)
{ for(c=0; c<C; c++)
{ scanf("%d", & mat[l][c]);
}
}
maior = 0;
for(l=0; l<L; l++)
{ soma = 0;
for(c=0; c<C; c++)
{ soma = soma + mat[l][c];
}
if(soma > maior)
{ maior = soma;
}
}
for(c=0; c<C; c++)
{ soma = 0;
for(l=0; l<L; l++)
{ soma = soma + mat[l][c];
}
if(soma > maior)
{ maior = soma;
}
}
printf("%d\n", maior);
return 0;
}

Comentários

Postagens mais visitadas deste blog