Buscar

05.LabII.TADMatriz

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 16 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 16 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 9, do total de 16 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

Prévia do material em texto

Laboratório de Programação II
Departamento de Ciência da Computação
UFJF
Aula de hoje
•Matrizes
•Representação linear
Matrizes
– Matrizes aparecem com grande frequência
em diversos problemas.
– A seguir, será apresentada a implementação
de um TAD para matrizes cheias (densas)
usando a representação linear vista em sala
de aula de ED.
– TAD TMat2D
TAD TMat2D
•Dados
–M x N elementos
•Operações
–Construir (Criar) matriz com M linhas e N colunas
–Destruir (Liberar) matriz
–Consultar (Acessar) elemento na posição (i,j)
– Atribuir (Alterar) o valor do elemento na posição
(i,j)
–etc.
TAD TMat2D 
(representação linear)
TAD TMat2D
•Observações:
–O TAD TMat2D será implementado usando uma
representação linear – isto é, um vetores.
–Sendo assim, é necessário transformar os índices
i e j da matriz, no índice K correspondente do
vetor.
–Logo, K = I * N + J
TAD TMat2D
•Para implementar o TAD TMat2D em C++ deve-
se criar os seguintes arquivos:
–TMat2D.h
•Definição da classe TMat2D
•Dados e operações do TAD
–TMat2D.cpp
•MI – Modulo de implementação do TAD TMat2D
TMat2D.h
class TMat2D
{
private:
float *vet;
int m, n;
int detInd(int linha, int coluna);
public:
TMat2D(int mm, int nn);
void atribui(int linha, int coluna, float
valor);
float consulta(int linha, int coluna);
~TMat2D();
};
TMat2D.cpp (1)
#include "TMat2D.h"
#include <iostream>
#include <cstdlib>
using namespace std;
TMat2D::TMat2D(int mm, int nn)
{
cout << "Construtor (TMat2D)" << endl;
m = mm;
n = nn;
vet = new float[m*n];
}
TMat2D::~TMat2D()
{
cout << "Destrutor (TMat2D)" << endl;
delete [] vet;
}
TMat2D.cpp (2)
int TMat2D::detInd(int linha, int coluna)
{
if(linha >= 0 && linha < m && coluna >= 0
&& coluna < n)
return n*linha + coluna;
else
return -1;
}
TMat2D.cpp (3)
float TMat2D::consulta(int linha, int coluna)
{
int k = detInd(linha, coluna);
if(k != -1)
return vet[k];
else
{
cout << "Indice invalido!" << endl;
exit(1);
}
}
TMat2D.cpp (4)
void TMat2D::atribui(int linha, int coluna,
float valor)
{
int k = detInd(linha, coluna);
if(k != -1)
vet[k] = valor;
else
{
cout << "Indice invalido!" << endl;
exit(1);
}
}
PA usando o TAD TMat2D
#include <iostream>
#include "TMat2D.h" // inclui o TAD TMat2D0
using namespace std;
int main(){
int i,j;
float valor;
TMat2D *mat = new TMat2D(3,3);// cria matriz
for (i=0;i<3;i++){
for (j=0;j<3;j++){
cin >> valor; // le dados do teclado
mat->atribui(i,j,valor);//preenche a
//matriz
}
}
mat->imprimir();//implementar de forma a
//atender o exercício 1
delete mat; // libera matriz
return 0;
}
Exercícios
1. Implementar uma operação no MI do TAD TMat2D
para imprimir a matriz.
2. Implementar uma função no PA que determina se
uma matriz é ou não simétrica.
3. Implementar uma função no PA para encontrar o
maior valor da matriz.
4. Implementar uma operação no MI do TAD TMat2D
para calcular e retornar a multiplicação de 2 matrizes.
Uma delas é passada implicitamente e a outra como
parâmetro, protótipo:
TMat2D* TMat2D::Multiplica(TMat2D *M)
Exercícios
5. Implementar uma operação no MI do TAD TMat2D
para criar e retornar a transposta da matriz. Utilizar o
seguinte protótipo:
TMat2D* TMat2D::Transposta();
Obs: essa operação não deve alterar a matriz original,
apenas criar uma nova matriz e copiar os elementos de
forma correta para a nova matriz.
6. Implementar a operação no MI do TAD TMat2D que
realiza o produto de uma matriz por um vetor. O vetor
será representado por um array de objetos do domínio
float. Deve-se verificar se número de elementos n
do vetor é igual ao número de linhas da matriz.
Exercícios
Essa operação deve possuir o seguinte protótipo:
float* TMat2D::ProdMatVet(int n,
float v[]);
onde v representa o vetor a ser multiplicado pela
matriz. O resultado é um vetor (float*) que deve ser
alocado de forma dinâmica dentro da função e
retornado ao final.

Outros materiais