0% acharam este documento útil (0 voto)
11 visualizações27 páginas

Matrizes

Enviado por

jessicwtirbutino
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
11 visualizações27 páginas

Matrizes

Enviado por

jessicwtirbutino
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Matrizes

Prof. Roberto Hugo Wanderley Pinheiro


[email protected]
Roteiro
Introdução
Motivação
Matrizes
Declarar
Acessar
Preencher
Imprimir
Exemplos

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 2


Introdução
Matrizes são variáveis compostas
multidimensionais, capazes de armazenar mais
de um valor em cada índice

Exemplos
Matriz com notas de todos os alunos da turma
Matriz com todos os pontos de um objeto 3D

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 3


Motivação
Faça um programa que leia as notas da Av1,
Av2 e Projeto de 30 alunos. Depois, calcule a
média de cada aluno e diga se este aluno foi
aprovado, foi para final ou foi reprovado.

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 4


Motivação
#define N 30
int main (){
int i;
float av1[N], av2[N], pr[N], media;
for (i = 0 ; i < N ; i++) {
printf("Av1 do Aluno %d: ", (i+1));
scanf("%f", &av1[i]);
printf("Av2 do Aluno %d: ", (i+1));
scanf("%f", &av2[i]);
printf("Pr do Aluno %d: ", (i+1));
scanf("%f", &pr[i]);
}
for (i = 0 ; i < N ; i++) {
media = av1[i]*0.35 + av2[i]*0.35 + pr[i]*0.3;
if (media >= 7.0)
printf("Aluno %d aprovado", (i+1));
else if (media < 3.0)
printf("Aluno %d reprovado", (i+1));
else
printf("Aluno %d foi para final", (i+1));
printf("com média %.1f.\n", media);
}
}
Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 5
Motivação
#define N 30
int main (){
int i;
float av1[N], av2[N], pr[N], media;
for (i = 0 ; i < N ; i++) {
printf("Av1 do Aluno %d: ", (i+1));
scanf("%f", &av1[i]);
printf("Av2 do Aluno %d: ", (i+1));
scanf("%f", &av2[i]);
printf("Pr do Aluno %d: ", (i+1));
scanf("%f", &pr[i]);
}
for (i = 0 ; i < N ; i++) {
media = av1[i]*0.35 + av2[i]*0.35 + pr[i]*0.3;
if (media >= 7.0)
printf("Aluno %d aprovado", (i+1));
else if (media < 3.0)
printf("Aluno %d reprovado", (i+1));
else
printf("Aluno %d foi para final", (i+1));
printf("com média %.1f.\n", media);
}
}
Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 6
Declarar
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

float notas[4][3] = {{5.0, 4.5,


7.0}, {9.6, 7.8, 0.0}, {2.5, 1.5,
9.5}, {10.0, 8.5, 7.5}};

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 7


Declarar
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

float notas[4][3] = {
{5.0, 4.5, 7.0},
{9.6, 7.8, 0.0},
{2.5, 1.5, 9.5},
{10.0, 8.5, 7.5}
};

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 8


Declarar
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

float notas[4][3] = {
{5.0, 4.5, 7.0}, Vetor

{9.6, 7.8, 0.0}, Vetor

{2.5, 1.5, 9.5}, Vetor

{10.0, 8.5, 7.5} Vetor

};

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 9


Declarar
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

float notas[4][3] = {
{5.0, 4.5, 7.0}, Vetor

{9.6, 7.8, 0.0}, Vetor

{2.5, 1.5, 9.5}, Vetor

{10.0, 8.5, 7.5} Vetor

}; Matriz nada mais é do que um


vetor de vetores
Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 10
Acessar
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

media = notas[0][0]*0.35 +
notas[0][1]*0.35 +
notas[0][2]*0.3

Variável media terá que valor?

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 11


Acessar
[0] [1] [2]
[0] 5.0 4.5 7.0
[1] 9.6 7.8 0.0
[2] 2.5 1.5 9.5
[3] 10.0 8.5 7.5

media = notas[0][0]*0.35 +
notas[0][1]*0.35 +
notas[0][2]*0.3

Linha Coluna

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 12


Acessar
Av1 Av2 Pr
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

Como eu imprimiria a nota da Av2 do 3º aluno?

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 13


Acessar
Av1 Av2 Pr
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

Como eu imprimiria a nota da Av2 do 3º aluno?

printf("%f", notas[2][1]);

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 14


Acessar
Av1 Av2 Pr
5.0 4.5 7.0
9.6 7.8 0.0
2.5 1.5 9.5
10.0 8.5 7.5

Como eu imprimiria a nota da Av2 do 3º aluno?

printf("%f", notas[2][1]);
Coluna da Matriz

Linha da Matriz
Nome da Matriz

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 15


Preencher
Supondo que você queira que o usuário digite
toda a matriz, como fazer?

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 16


Preencher
Supondo que você queira que o usuário digite
toda a matriz, como fazer?
#include <stdio.h>

int main (){


int i, j;
float notas[4][3];
for (i = 0 ; i < 4 ; i++) {
for (j = 0 ; j < 3 ; j++) {
printf("Nota %d do Aluno %d: ", (j+1),(i+1));
scanf("%f", &notas[i][j]);
}
}
} São necessários dois for, pois precisamos ver
todas as linhas e colunas
Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 17
Imprimir
Supondo que você queira mostrar o conteúdo
de uma matriz

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 18


Imprimir
Supondo que você queira mostrar o conteúdo
de uma matriz
#include <stdio.h>

int main (){


int i, j;
float notas[4][3];
for (i = 0 ; i < 4 ; i++) {
for (j = 0 ; j < 3 ; j++) {
printf("%f\t", notas[i][j]);
}
printf("\n");
}
}

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 19


Exemplo
#define N 30
int main (){
int i;
float av1[N], av2[N], pr[N], media;
for (i = 0 ; i < N ; i++) {
printf("Av1 do Aluno %d: ", (i+1));
scanf("%f", &av1[i]);
printf("Av2 do Aluno %d: ", (i+1));
scanf("%f", &av2[i]);
printf("Pr do Aluno %d: ", (i+1));
scanf("%f", &pr[i]);
}
for (i = 0 ; i < N ; i++) {
media = av1[i]*0.35 + av2[i]*0.35 + pr[i]*0.3;
if (media >= 7.0)
printf("Aluno %d aprovado", (i+1));
else if (media < 3.0)
printf("Aluno %d reprovado", (i+1));
else
printf("Aluno %d foi para final", (i+1));
printf("com média %.1f.\n", media);
}
}
Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 20
Exemplo
#define N 30
int main (){
int i, j;
float notas[N][3], media;
for (i = 0 ; i < N ; i++) {
for (j = 0 ; j < 3 ; j++) {
printf("Nota %d do Aluno %d: ", (j+1),(i+1));
scanf("%f", &notas[i][j]);
}
printf("\n");
}
for (i = 0 ; i < N ; i++) {
media = notas[i][0]*0.35 + notas[i][1]*0.35 + notas[i][2]*0.3;
if (media >= 7.0)
printf("Aluno %d aprovado", (i+1));
else if (media < 3.0)
printf("Aluno %d reprovado", (i+1));
else
printf("Aluno %d foi para final", (i+1));
printf("com média %.1f.\n", media);
}
} Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 21
Mais Exemplo
Faça um programa que armazene o nome e a
idade de 30 pessoas. Imprima o nome da
pessoa mais nova

Obs: em C não é possível ter dados de tipos


diferentes misturados no mesmo vetor ou
matriz

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 22


Mais Exemplo
#define N 30
int main (){
int i, menor, pos;
float idade[N];
char nome[N][50];
for (i = 0 ; i < N ; i++) {
printf("Nome da Pessoa %d: ", (i+1));
scanf("%s", nome[i]);
printf("Idade da Pessoa %d: ", (i+1));
scanf("%f", &idade[i]);
printf("\n");
}
menor = idade[0];
pos = 0;
for (i = 1 ; i < N ; i++) {
if (idade[i] < menor) {
menor = idade[i];
pos = i;
}
}
printf("%s é o mais novo.", nome[pos]);
} Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 23
Mais Exemplo
Faça um programa que dado uma Matriz
quadrada de tamanho 10, calcule a média
aritmética dos elementos na diagonal principal

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 24


Mais Exemplo
#define N 10

int main (){


int i, j;
float media;
float matriz[N][N];
for (i = 0 ; i < N ; i++) {
for (j = 0 ; j < N ; j++) {
printf("Matriz(%d)(%d) = ", (i+1),(j+1));
scanf("%f", &matriz[i][j]);
}
}
media = 0.0;
for (i = 0 ; i < N ; i++) {
for (j = 0 ; j < N ; j++) {
if (i == j) {
media += matriz[i][j];
}
}
}
media = media / N;
printf("Média da Diagonal Principal: %.2f", media);
}

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 25


Mais Exemplo
#define N 10

int main (){


int i, j;
float media;
float matriz[N][N];
for (i = 0 ; i < N ; i++) {
for (j = 0 ; j < N ; j++) {
printf("Matriz(%d)(%d) = ", (i+1),(j+1));
scanf("%f", &matriz[i][j]);
}
}
media = 0.0;
for (i = 0 ; i < N ; i++) {
media += matriz[i][i];
}
media = media / N;
printf("Média da Diagonal Principal: %.2f", media);
}

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 26


Exercício em Sala
Lembra da questão de calcular a média de 30
alunos e dizer se passou?

Modifique o programa original para inserir as


seguintes funcionalidades
Em vez de três notas fixas, serem 5 notas definidas
pelo usuário
Permitir que o usuário também defina os pesos
dessas notas individualmente

Prof. Roberto Pinheiro Introdução à Programação (CC0001 e MC0004) 27

Você também pode gostar