Capitulo09 Exercicios

1010 palavras 5 páginas
Estruturas de Dados

Tipos 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

Relacionados