#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "tad_r2.h"
int main(void) {
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: %f\n", c);
c = distanciaL1 (a,b);
printf ("Distancia L1 entre pontos: %.2f\n", c);
c = calculo_soma (a,b);
printf ("Soma entre pontos: %.2f\n", c);
c = calculo_sub (a,b);
printf ("Subtracao entre pontos: %.2f\n", c);
libera(a);
libera(b);
return 0;
}
typedef struct ponto Ponto;
Ponto* cria (float x, float y);
void libera (Ponto* p);
void acessa (Ponto* p, float* x, float* y);
void atribui (Ponto* p, float x, float y);
float distancia (Ponto* p1, Ponto* p2);
float distanciaL1 (Ponto* p1, Ponto* p2);
float calculo_soma (Ponto* p1, Ponto* p2);
float calculo_sub (Ponto* p1, Ponto* p2);
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#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);
}
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;
}
float distancia (Ponto* p1, Ponto* p2){
float dx = p2->x - p1->x;
float dy = p2->y - p1->y;
return sqrt (dx*dx + dy*dy);
}
float distanciaL1 (Ponto* p1, Ponto* p2){
float dx = p2->x - p1->x;
float dy = p2->y - p1->y;
return (dx*dx + dy*dy);
}
float calculo_soma (Ponto* p1, Ponto* p2){
float dx = p1->x + p2->x;
float dy = p1->y + p2->y;
return (dx + dy);
}
float calculo_sub (Ponto* p1, Ponto* p2){
float dx = p1->x - p2->x;
float dy = p1->y - p2->y;
return (dx - dy);
}