Tipo Abstrato de Dado

Run Settings
LanguageC
Language Version
Run Command
//Para compilar: gcc tad_r2.c principal_r2.c -o prog; ./prog #include <stdio.h> #include "tad_r2.h" //#include "tad_l1.h" int main() { float x, y; Ponto *a = cria(1.0,1.0); Ponto *b = cria(4.0,4.0); acessa(a,&x,&y); printf("Ponto a(%.2f,%.2f)\n",x,y); acessa(b,&x,&y); printf("Ponto b(%.2f,%.2f)\n",x,y); float c = distancia(a,b); printf("Distancia entre pontos: %.2f\n",c); //c = distanciaL1(a,b); //printf("Distancia L1 entre pontos: %.2f\n",c); libera(a); libera(b); return(0); }
#include <stdlib.h> /* malloc, free, exit */ #include <stdio.h> /* printf */ #include <math.h> /* sqrt */ #include "tad_r2.h" struct ponto { float x; float y; }; Ponto* cria (float x, float y) { Ponto* p = (Ponto*) malloc(sizeof(Ponto)); if (p == NULL) { printf("Memoria insuficiente!\n"); exit(1); } p->x = x; p->y = y; return p; } void libera (Ponto* p) { free(p); p = NULL; } void acessa (Ponto* p, float* x, float* y) { *x = p->x; *y = p->y; } void atribui (Ponto* p, float x, float y) { p->x = x; p->y = y; } //Distancia euclidiana entre dois pontos no R^2 float distancia (Ponto* p1, Ponto* p2) { float dx = p2->x - p1->x; float dy = p2->y - p1->y; return sqrt(dx*dx + dy*dy); }
/* TAD: Ponto (x,y) */ /* Novo tipo de dados */ typedef struct ponto Ponto; /* Funções exportadas */ /* Função cria Aloca e retorna um ponto com coordenadas (x,y)*/ Ponto* cria (float x, float y); /* Função libera Libera a memória de um ponto previamente criado.*/ void libera (Ponto* p); /* Função acessa Devolve os valores das coordenadas de um ponto*/ void acessa (Ponto *p, float *x, float *y); /* Função atribui Atribui novos valores às coordenadas de um ponto*/ void atribui (Ponto* p, float x, float y); /* Função distancia Retorna a distância entre dois pontos */ float distancia (Ponto* p1, Ponto* p2);
#include <stdio.h> #include "tad_r2.h" float distanciaL1 (Ponto* p1, Ponto* p2) { float x, y; Ponto *a = cria(1.0,1.0); Ponto *b = cria(4.0,4.0); acessa(a,&x,&y); float nx = p2->x - p1->x; float ny = p2->y - p1->y; return sqrt(dx*dx + dy*dy); }
float distanciaL1 (Ponto* p1, Ponto* p2);
Editor Settings
Theme
Key bindings
Full width
Lines