Você está na página 1de 19

Aula 11

Técnicas de Desenvolvimento de Algoritmos


Matrizes

PROFESSORA:
E C I L A A LV E S D E O L I V E I R A M I G L I O R I
emigliori@unicid.edu.br

UNICID – 2.Sem/2022
Matrizes

Uma matriz nada mais é do que dados organizados em uma tabela. Isso facilita a
organização e a interpretação dos dados.
Denomina-se matriz m x n (lê-se m por n) uma tabela formada por m x n disposta
em m linhas e n colunas.

É uma matriz cuja dimensão descrevemos como 3x4 - porque ela tem 3 linhas ou 4 colunas.

2
Matrizes

Para a representação dos elementos de uma Matriz, é preciso conhecer outra


notação: i e j.
Tal notação serve para representar o "endereço" de um elemento na matriz, em
que i indica a linha e j indica a coluna onde se encontra o elemento.

3
Matrizes

Matriz em C
Uma matriz pode ser definida como um conjunto de variáveis de mesmo tipo e
identificadas pelo mesmo nome.
Essas variáveis são diferenciadas por meio da especificação de suas posições dentro
dessa estrutura.
A linguagem C permite a declaração de matrizes unidimensionais (conhecidas como
vetores), bidimensionais e multidimensionais.
O padrão ANSI prevê até 12 dimensões. Entretanto, o limite de dimensões fica por conta
da quantidade de recursos disponíveis ao compilador.
Para cada dimensão deve ser utilizado um índice.

4
Matrizes

Declaração de Matriz
Os elementos da matriz são armazenados nume sequência contínua na memória.

tipo_dos_dados nome_variável [dimensão1][dimensão2][...][dimensãoN]

Onde:
tipo_dos_dados é o tipo de dados que serão armazenados na matriz.

nome_variável é o nome dado à variável do tipo matriz.

[dimensão1] representa o tamanho da 1ª dimensão da matriz.

[dimensão2] representa o tamanho da 2ª dimensão da matriz.

[dimensãoN] representa o tamanho da n-ésima dimensão da matriz.

5
Matrizes

Declaração de Matriz
Exemplo: int M[3][4];

Da mesma maneira como ocorre com os vetores, os índices começam sempre em 0


(zero).
Sendo assim, com a declaração acima, criou-se uma variável chamada M contendo 3
linhas com 4 colunas cada, capazes de armazenar números inteiros.

6
Matrizes

Atribuindo valores a uma Matriz


Atribuir valor a uma matriz significa armazenar uma informação em um de seus
elemento, identificado de forma única por meio de seus índices.
Exemplo:
M[1][3] = 12; -> atribui o valor 12 à posição identificada pelos índices 1 (2ª linha)
e 3 (4ª coluna)

7
Matrizes

Preenchendo uma Matriz


Preencher uma matriz significa percorrer todos os seus elementos, atribuindo-lhes um
valor.
Este valor pode ser recebido do usuário, por meio do teclado, ou pode ser gerado pelo
programa.

int M[3][4],i,j;
for (i=0; i<3; i++) {
for (j=0; j<4; j++) {
printf("Digite a posicao [%d][%d] da matriz = ",i,j);
scanf("%d",&M[i][j]);
}
printf("\n");
}

8
Matrizes

Mostrando os elementos de uma Matriz


Pode-se também percorrer todos os elementos de uma matriz acessando o seu conteúdo.

int M[3][4],i,j;
for (i=0; i<3; i++) {
for (j=0; j<4; j++) {
printf("Digite a posicao [%d][%d] da matriz = ",i,j);
scanf("%d",&M[i][j]);
}
printf("\n");
}
printf("Mostrando o conteudo da Matriz\n");
for (i=0; i<3; i++) {
for (j=0; j<4; j++) {
printf("Posicao [%d][%d] da matriz = %d\n",i,j,M[i][j]);
}
printf("\n");
}
9
Matrizes
Exemplo 1: Faça um programa em C que leia uma matriz 3 x 4 e depois apresenta na tela
como uma matriz representada na Matemática.

#include <stdio.h>
int main(int argc, char* argv[])
{
int M[3][4], i, j;
for (i=0; i<3; i++) {
for (j=0; j<4; j++) {
printf("Digite a posicao [%d][%d] da matriz = ",i,j);
scanf("%d",&M[i][j]);
}
printf("\n");
}
printf("Mostrando o conteudo da Matriz\n");
for (i=0; i<3; i++) {
for (j=0; j<4; j++)
printf("%d\t",M[i][j]);
printf("\n");
}
return 0;
} 10
Matrizes
Exemplo 2: Faça um programa em C que crie uma matriz identidade 3 x 3 e apresenta na
tela. Matriz Identidade:

#include <stdio.h>
int main(int argc, char* argv[])
{
int M[3][3], i, j;
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
if (i ==j) M[i][j]=1;
else M[i][j]=0;
}
}
printf("Mostrando o conteudo da Matriz\n");
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
printf("%d\t",M[i][j]);
}
printf("\n");
}
return 0;
}
11
Matrizes
Exemplo 3: Elaborar uma aplicação console para ler duas matrizes A2x3 e B2x3. Construir
uma matriz C de mesma dimensão, onde C é formada pela soma dos elementos da matriz
A com os elementos da matriz B. Apresentar a matriz C.
#include <stdio.h>
int main(int argc, char* argv[]){
int matA[2][3], matB[2][3], matC[2][3], i, j;
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
printf("Digite um valor para o %do. elemento da linha %d, coluna %d da Matriz A: ",j+1,i+1,j+1);
scanf("%d",&matA[i][j]);
}
}
printf("\n");
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
printf("Digite um valor para o %do. elemento da linha %d, coluna %d da Matriz B: ",j+1,i+1,j+1);
scanf("%d",&matB[i][j]);
}
}
printf("\n Os valores somados sao: \n");
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
matC[i][j] = matA[i][j] + matB[i][j];
printf("%d\t",matC[i][j]);
}
printf("\n");
}
return 0;
} 12
Matrizes
Exemplo 4: Elaborar uma aplicação console que preencha um vetor com 4 posições,
contendo nomes de lojas; outro vetor com 4 posições, contendo nomes de produtos; uma
matriz com os preços de todos os produtos em cada loja. Mostre uma listagem dos
produtos e respectivas lojas cujos preços não ultrapassam R$ 120,00.
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]){
char lojas[4][30], produtos[4][30];
float preco[4][4];
int i, j;
for (j=0;j<4;j++)
{ printf("\nDigite o nome da %d loja ",j+1);
scanf("%30[^\n]", lojas[j]);
scanf("%c");
}
for (i=0;i<4;i++)
{ printf("\nDigite o nome do %d produto ",i+1);
scanf("%30[^\n]", produtos[i]);
scanf("%c");
}
Fonte: https://wagnergaspar.com/matriz-de-strings-na-linguagem-de-programacao-c/ 13
Matrizes
Exemplo 4: #include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]){
char lojas[4][30], produtos[4][30];
float preco[4][4];
int i, j;
for (j=0;j<4;j++)
{ printf("\nDigite o nome da %d loja ",j+1);
scanf("%30[^\n]", lojas[j]);
scanf("%c");
}
for (i=0;i<4;i++)
{ printf("\nDigite o nome do %d produto ",i+1);
scanf("%30[^\n]", produtos[i]);
scanf("%c");
}
for (i=0;i<4;i++)
{ for (j=0;j<4;j++)
{ printf("\nDigite o preco do produto %s na loja %s ",produtos[i],lojas[j]);
scanf("%f",&preco[i][j]);
}
}
printf("\nListagem dos produtos e respectivas lojas cujos precos nao ultrapassam R$ 120,00");
for (i=0;i<4;i++)
{ for (j=0;j<4;j++)
{ if (preco[i][j] < 120)
printf("\n %s - %s ",produtos[i],lojas[j]);
}
}
printf("\n");
return 0;
}
14
Exercícios para assimilação

Atividade prática para treinar em casa

15
Prática para treinar em casa
Prática 11.1:
Elaborar uma aplicação console que leia uma matriz 3 X 3 com as notas de 3 alunos em 3
provas. O programa deverá mostrar um relatório com o número dos alunos (número da
linha) e a prova em que cada aluno obteve menor nota.
Prática 11.2:
Elaborar uma aplicação console que leia uma matriz M ( 2X2 ), calcule e mostre a matriz
R, resultante da multiplicação dos elementos de M pelo seu maior elemento.

16
Prática para treinar em casa
Prática 11.1: Elaborar uma aplicação console que leia uma matriz 3 X 3 com as notas de 3
alunos em 3 provas. O programa deverá mostrar um relatório com o número dos alunos
(número da linha) e a prova em que cada aluno obteve menor nota.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
float notas[3][3], menor;
int prova_menor, i, j;
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
{ printf("\nDigite a %d nota do aluno %d : ",j+1,i+1);
scanf("%f",&notas[i][j]);
}
}
for (i=0;i<3;i++) {
printf("\nAluno numero %d : ",i+1);
menor = notas[i][0];
prova_menor = 0;
for (j=0;j<3;j++)
{ if (notas[i][j] < menor)
{ menor = notas[i][j];
prova_menor = j; }
}
printf("\nA menor nota do aluno %d foi na %da. prova.\n" ,i+1,prova_menor+1);
}
return 0;
}
17
Prática para treinar em casa
Prática 11.2: Elaborar uma aplicação console que leia uma matriz M ( 2X2 ), calcule e mostre
a matriz R, resultante da multiplicação dos elementos de M pelo seu maior elemento.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
int mat[2][2], resultado[2][2], i, j, maior;
for (i=0;i<2;i++) {
for (j=0;j<2;j++) {
printf("\nDigite o elemento da linha %d e coluna %d: ",i+1,j+1);
scanf("%d",&mat[i][j]);
}
}
maior = mat[0][0];
for (i=0;i<2;i++) {
for (j=0;j<2;j++) {
if (mat[i][j] > maior) maior = mat[i][j];
}
}
for (i=0;i<2;i++) {
for (j=0;j<2;j++) resultado[i][j] = maior * mat[i][j];
}
printf("\n Imprimindo a matriz resultante: \n ");
for (i=0;i<2;i++) {
for (j=0;j<2;j++) printf("%d \n",resultado[i][j]);
}
return 0;
}

18
Obrigada!!!
19

Você também pode gostar