Capitulo09 Exercicios
1010 palavras
5 páginas
Estruturas de DadosTipos Abstratos de Dados – Exercícios
4/5/2006
(c) Dept. Informática - PUC-Rio
1
Referências
Waldemar Celes, Renato Cerqueira, José Lucas Rangel,
Introdução a Estruturas de Dados, Editora Campus
(2004)
Exercícios Parte II (pág. 214)
4/5/2006
(c) Dept. Informática - PUC-Rio
2
Questão 1
• Implemente um tipo abstrato de dados para vetores no
R3, contendo:
– um arquivo com a definição do tipo e das assinaturas das funções • cria
(cria um vetor)
• libera
(libera o espaço reservado para um vetor)
• soma
(soma de 2 vetores)
• prodint
(produto interno)
• prodvet
(produto vetorial)
– um arquivo com a implementação do tipo e das funções
4/5/2006
(c) Dept. Informática - PUC-Rio
3
Questão 1 typedef struct vetor Vetor;
Vetor* cria(float x, float y, float z); void libera(Vetor* v);
Vetor* soma(Vetor* v1, Vetor* v2); float prodint (Vetor* v1, Vetor* v2);
Vetor* prodvet (Vetor* v1, Vetor* v2);
4/5/2006
(c) Dept. Informática - PUC-Rio
4
Questão 1
#include <stdlib.h>
#include <stdio.h>
#include "vetor.h" struct vetor { float x; float y; float z;
};
4/5/2006
(c) Dept. Informática - PUC-Rio
5
Questão 1
Vetor* cria(float x0, float y0, float z0)
{
Vetor* v=(Vetor*) malloc(sizeof(Vetor)); v->x=x0; v->y=y0; v->z=z0; return v;
}
void libera(Vetor* v)
{
free(v);
}
4/5/2006
(c) Dept. Informática - PUC-Rio
6
Questão 1
Vetor* soma(Vetor* v1, Vetor* v2)
{
Vetor *v=cria(v1->x+v2->x, v1->y+v2->y, v1->z+v2->z); return v;
}
float prodint (Vetor* v1, Vetor* v2)
{
float prod = v1->x*v2->x + v1->y*v2->y + v1->z*v2->z; return prod;
}
Vetor* prodvet (Vetor* v1, Vetor* v2)
{
Vetor* pv=(Vetor*) malloc(sizeof(Vetor)); pv->x = v1->y*v2->z - v1->z*v2->y; pv->y = -(v1->x*v2->z - v1->z*v2->x); pv->z = v1->x*v2->y - v1->y*v2->x; return pv;
}
4/5/2006
(c) Dept. Informática - PUC-Rio
7
Questão 2
Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto:
• Codigo de identificação do produto: representado por um