O documento apresenta exemplos de algoritmos para manipulação de matrizes. O primeiro exemplo soma as notas de alunos armazenadas em uma matriz. O segundo exemplo preenche uma matriz 10x10 com valores lidos, e gera outra matriz multiplicando por três os valores pares da primeira.
2. Matrizes de duas ou mais
dimensão
1 M[1,1] M[1,2] M[1,3] M[1,4] M[1,5]
2 M[2,1] M[2,2] M[2,3] M[2,4] M[2,5]
3 M[3,1] M[3,2] M[3,3] M[3,4] M[3,5]
4 M[4,1] M[4,2] M[4,3] M[4,4] M[4,5]
5 M[5,1] M[5,2] M[5,3] M[5,4] M[5,5]
1 2 3 4 5
Matriz M
Linhas
Colunas
3. Exemplo
• 1 - Faça um programa que leia 3 notas
escolares de 4 alunos (cada aluno contendo 3
notas), e mostre a soma de todas as notas:
4. Exemplo
programa soma_aluno
var
tipo mat = Matriz[1..4][1..3] de reais
mat_notas : mat
soma : real
lin, col : inteiro
inicio
soma 0
//laço para leitura das notas e armazenamento na matriz
para lin de 1 até 4 passo 1 faça
para col de 1 até 3 passo 1 faça
escreva “Digite a nota”, col, “para o aluno”, lin
leia mat_notas[lin][col]
fim_para
fim_para
//laço acumulador
para lin de 1 até 4 passo 1 faça
para col de 1 até 3 passo 1 faça
soma soma + mat_notas[lin][col]
fim_para
fim_para
escreva “Total de notas de todas as provas é:”, Soma
fim
5. Exemplo
#include <stdio.h>
void main ()
{
float mat_notas[4][3];
float soma;
int lin, col;
soma = 0;
for (lin=0; lin<4; lin++) {
for (col=0; col<3; col++){
printf("Digite a nota %d para o aluno %d: ", col+1, lin+1);
scanf("%f", &mat_notas[lin][col]);
}
}
for (lin=0; lin<4; lin++) {
for (col=0; col<3; col++){
soma = soma + mat_notas[lin][col];
}
}
printf("nTotal de notas de todas as provas: %f", soma);
}
6. Exemplo
• 2 - Construa um algoritmo que preencha uma
matriz de 10 x 10, fazendo a leitura de cada
posição e apresente outra matriz com a
mesma estrutura que contenha cada posição
equivalente o valor em triplo, somente dos
elementos que sejam pares;
7. Exemplo
programa valor_triplo_de_pares
var
tipo mat = Matriz[1..10][1..10] de inteiros
mat_A, mat_B : mat
resto, lin, col : inteiro
inicio
//laço para leitura das notas e armazenamento na matriz
para lin de 1 até 10 passo 1 faça
para col de 1 até 10 passo 1 faça
escreva “Valor coluna[”, col, “] e linha [“, lin, “]”
leia mat_A[lin][col]
fim_para
fim_para
//Fazendo o processamento
para lin de 1 até 10 passo 1 faça
para col de 1 até 10 passo 1 faça
resto mat_A[lin][col] MOD 2
se (resto = 0) então
mat_B[lin][col] mat_A[lin][col] * 3
senão
mat_B[lin][col] mat_A[lin][col]
fim_se
fim_para
fim_para
fim
8. Exemplo
#include <stdio.h>
void main ()
{
int tam = 3;
int mat_A[tam][tam], mat_B[tam][tam];
int resto, lin, col;
for (lin=0; lin<tam; lin++) {
for (col=0; col<tam; col++){
printf("nDigite coluna[%d] e linha[%d]: ", col+1, lin+1);
scanf("%d", &mat_A[lin][col]);
}
}
for (lin=0; lin<tam; lin++) {
for (col=0; col<tam; col++){
resto = mat_A[lin][col] % 2;
if (resto == 0) {
mat_B[lin][col] = mat_A[lin][col] * 3;
}
else {
mat_B[lin][col] = mat_A[lin][col];
}
}
}
for (lin=0; lin<tam; lin++) {
for (col=0; col<tam; col++){
printf("nmat_B[%d][%d] = %d", col+1, lin+1, mat_B[lin][col]);
}
}
}