Buscar

Aula 03 - Matrizes - Parte 1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Estácio de Sá 
Professor Rogério 	 	 Disciplina: Linguagem de Programação 
Curso de Engenharia Civil , Engenharia de Produção e Automação
Matrizes na linguagem C.
1. O que é uma matriz ou vetor?
Vetor é uma estrutura de dados que possui apenas uma dimensão
Matriz é uma estrutura de dados do tipo vetor com duas ou mais dimensões. 
Os itens de um vetor ou matriz são todos do mesmo tipo de dados.
2. Vetor / Matriz em linguagem C
Exemplo de declaração de vetor com 1 dimensão usando a linguagem C.
float nota[6];
Onde: O valor 6 representa a quantidade de colunas que o vetor possui.
Exemplo de declaração de matriz com 2 dimensões usando linguagem C.
float media[5][2];
Onde: O valor 5 representa a quantidade de linhas e o valor 2 representa a quantidade de colunas.
Dizemos que esta matriz é do tipo 5 X 2.
Como temos 5 linhas com 2 posições de armazenamento em cada linha, temos capacidade para armazenar até 10 elementos (itens) do tipo float. 
Será necessário utilizar um índice para cada dimensão da matriz, logo uma matriz bidimensional terá 2 índices, um para posicionar a linha, outro para a coluna. Assim, como no vetor, o índice da primeira posição é zero.
Como atribuir valores a uma matriz?
Suponha a matriz como declarada:
float media[5] [2];
para atribuir uma valor precisamos identificar a posição usando os índices:
media [0][0] = 5;
//Atribui o valor 5 na primeira linha e primeira coluna.
media [1][0] = 7;
// Atribui o valor 7 na segunda linha, primeira coluna.
Preenchendo uma matriz
Para fazer o preenchimento de uma matriz, devemos percorrer todos os seus elementos e atribuir-lhes um valor. Isto pode ser feito tanto gerando valores para cada elemento da matriz, como recebendo os valores pelo teclado. Um método interessante para percorrer um vetor/matriz é usar uma estrutura de repetição for.
Exemplo de Vetores
Desenvolva um programa, utilizando VETOR, que leia as seguintes notas de um aluno e calcule a sua média. Utilize uma função que receba como parâmetro o Vetor e retorne o valor da média.
Exemplo:
	
Valores do vetor8.0
	7.5
	8.5
	9.0
	
Índices do vetor8.0
	
0
	
1
	
2
	
3
	
4
#include <iostream.h>
float media (float V[100]){
 return (V[0]+V[1]+V[2]+V[3]+V[4])/5;
} 
main(){
 float V[100], resultado; 
 // leitura do vetor
 cout << "Digite 5 valores: \n";
 cin >> V[0]>>V[1]>>V[2]>>V[3]>>V[4];
 // calculo da media
 resultado = media(V);
 cout << "Media : "<< resultado<<"\n";
 system("pause");
} 
Exemplo de Matrizes
Agora, vamos representar as notas em Física, abaixo das de Matemática. Teremos uma matriz 2x5, ou seja, uma matriz de duas linhas e 5 colunas:
	8.0
	7.5
	8.5
	9.0
	8.0
	 0,0
	0,1
	0,2
	0,3
	0,4
	8.9
	9.0
	8.6
	8.4
	8.0
	 1,0
	 1,1
	 1,2
	 1,3
	 1,4
Índices da Matriz
Valores da Matriz
#include <iostream.h>
#include <math.h>
float mediaMatematica (float V[100][100]){
 return (V[0][0]+V[0][1]+V[0][2]+V[0][3]+V[0][4])/5;
} 
float mediaFisica (float V[100][100]){
 return (V[1][0]+V[1][1]+V[1][2]+V[1][3]+V[1][4])/5;
} 
main(){
 float V[100][100], resultado; 
 // leitura da matriz
 cout << "Digite 5 notas de matemática: \n";
 cin >> V[0][0]>>V[0][1]>>V[0][2]>>V[0][3]>>V[0][4];
 cout << "Digite 5 notas de Física: \n";
 cin >> V[1][0]>>V[1][1]>>V[1][2]>>V[1][3]>>V[1][4];
 // calculo da media
 resultado = mediaMatematica(V);
 cout << "Media Matematica : "<< resultado<<"\n";
 resultado = mediaFisica(V);
 cout << "Media Fisica : "<< resultado<<"\n"; 
 system("pause");
} 
Agora é a sua vez:
Vamos representar as notas de Química, abaixo das notas de Física. Teremos uma matriz 3x5, ou seja, uma matriz de três linhas e 5 colunas:
	8.0
	7.5
	8.5
	9.0
	8.0
	8.9
	9.0
	8.6
	8.4
	8.0
	6.8
	7.1
	7.0
	7.6
	6.5
Para  declarar a matriz 2x5, fazemos: float notas[2][5];
Note que temos duas linhas: notas[0][] e notas[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.
Para declarar matrizes e inicializar, devemos colocar cada linha entre chaves {}, e separar elas por vírgulas, veja:
float notas[2][5] = { {8.0, 7.5, 8.5, 9.0, 8.0 }, {8.9, 9.0, 8.6, 8.4, 8.0 } };
Uma maneira mais simples de ver essas linhas e colunas, como tabela, é da seguinte maneira:
float notas[2][5] = { {8.0, 7.5, 8.5, 9.0, 8.0 },
                              {8.9, 9.0, 8.6, 8.4, 8.0 } };
Para declarar a matriz 3x5, fazemos::
float notas[3][5];
Veja como fica nossa matriz, ou tabela, declarada e inicializada:
float notas[3][5] = { {8.0, 7.5, 8.5, 9.0, 8.0 }, {8.9, 9.0, 8.6, 8.4, 8.0 }, {6.8, 7.1, 7.0, 7.6, 6.5 } };
De uma maneira mais fácil de entender:
float notas[3][5] = { {8.0, 7.5, 8.5, 9.0, 8.0 }, 
                             {8.9, 9.0, 8.6, 8.4, 8.0 }, 
                             {6.8, 7.1, 7.0, 7.6, 6.5 } };
Note que notas[0] se refere ao vetor de notas de Matemática.
Note que notas[1] se refere ao vetor de notas de Física.
Note que notas[2] se refere ao vetor de notas de Química.
Por exemplo: qual foi a quarta nota de Física do aluno?
Ora, o vetor de Física é notas[1], e a quarta nota é o elemento [3] desse vetor.
Então a quarta nota de Física do aluno está armazenada em: notas[1][3], que é 8.4
Generalizando, para declarar uma matriz de ‘linha’ linhas e de ‘coluna’ colunas, fazemos:
tipo nome[linha][coluna];
Problema Proposto e resolvido:
	Calcule o valor do determinante para uma Matriz 2x2.
 V = = = V[0][0]* V[1][1] - V[0][1]* V[1][0] = 4*5 – 3*2 = 14.
#include <iostream.h>
#include <math.h>
float determinante (float V[100][100]){
 return (V[0][0]*V[1][1]) - (V[0][1]*V[1][0]);
}
 
main(){
 float V[100][100], resultado ; 
 // leitura da matriz
 cout << "Digite a 1. linha da Matriz \n";
 cin >> V[0][0]>>V[0][1];
 cout << "Digite a 2. linha da Matriz: \n";
 cin >> V[1][0]>>V[1][1];
 // calculo do determinte.
 resultado = determinante(V);
 cout << "Determinante : "<< resultado<<"\n"; 
 system("pause");
} 
Agora é a sua vez:	
Calcule o valor do determinante para uma Matriz 3x3.
V = 	| 2 3 4 | =>	| 2 3 4 | 2 3 => 	| 0,0 0,1 0,2 | 0,0 0,1 => elementos da diagonal principal 
	| 5 1 3 |	| 5 1 3 | 5 1 	| 1,0 1,1 1,2 | 1,0 1,1 menos
	| 6 7 2 | 	| 6 7 2 | 6 7		| 2,0 2,1 2,2 | 2,0 2,1 elementos da diagonal secundária
(V[0][0]*V[1][1]*V[2][2] + V[0][1]*V[1][2]*V[2][0] + V[0][2]*V[1][0]*V[2][1]) –
 (V[2][0]*V[1][1]*V[0][2] + V[2][1]*V[1][2]*V[0][0] + V[2][2]*V[1][0]*V[0][1]) 
(2*1*2 + 3*3*6 + 4*5*7) – (6*1*4 + 7*3*2 + 2*5*3) => 198 – 96 =>
102.
 
 
PROBLEMA RESOLVIDO:
Sistemas lineares: são úteis para todos os campos da matemática aplicada, em particular, quando se trata de modelar e resolver numericamente problemas de diversas áreas. Nas engenharias, na física, na biologia, na química e na economia, por exemplo, é muito comum a modelagem de situações por meio de sistemas lineares.
Solução de uma Sistema Linear com 2 incógnitas.
Para verificação, digite os seguintes sistemas.
	2x + 3y = 8
 x - y = -1
solução: (1,2)
	3x + y = 9
 2x - 3y = 3
solução: (2,3)
	2x - 5y = 11
3x + 6y = 3
solução: (3,1)
	x + 2y = 5
2x - 3y = -4
solução: (1,2)
	3x + 3y = -3
5x – 2y = -12
Solução: (-2,1)
Método de solução usando Matrizes (CRAMER).
#include <iostream.h>
float calculo(float M[100][100]){
 return (M[0][0]*M[1][1]) - (M[0][1]*M[1][0]);
}
main(){
 float x,y,termoX1,termoX2,termoY1,termoY2,termoI1,termoI2;
 float M[100][100];
 float deltaX, deltaD, deltaY;
 cout << "EQUACAO 1 \n";cout << "x1 y1 = termo: ";
 cin >> termoX1 >> termoY1 >> termoI1;
 
 cout << "EQUACAO 2 \n";
 cout << "x2 y2 = termo: ";
 cin >> termoX2 >> termoY2 >> termoI2;
 
 M[0][0] = termoX1;
 M[0][1] = termoX2;
 M[1][0] = termoY1;
 M[1][1] = termoY2;
 deltaD = calculo (M);
 cout << "delta D : " <<deltaD << "\n";
 M[0][0] = termoI1;
 M[0][1] = termoI2;
 M[1][0] = termoY1;
 M[1][1] = termoY2;
 deltaX = calculo (M);
 cout << "delta X : " <<deltaX << "\n";
 M[0][0] = termoX1;
 M[0][1] = termoX2;
 M[1][0] = termoI1;
 M[1][1] = termoI2;
 deltaY = calculo (M);
 cout << "delta Y : " <<deltaY << "\n";
 cout << " x vale : "<< deltaX/deltaD << "\n";
 cout << " y vale : "<< deltaY/deltaD << "\n"; 
 system("pause");
}
Problema Proposto: Desenvolva a solução de um sistema linear com 3 variáveis, utilize o método de cramer. 
Exercícios para Fixação.
1) Dada a matriz  , calcule a11 + a21 – a13 + 2a22.
2) Crie uma matriz de ordem 3 e :
a) Exiba a soma de cada uma das linhas da matriz.
b) Exiba a soma de cada uma das colunas da matriz.
c) Exiba a soma da diagonal principal.

Continue navegando