#include <stdlib.h>
#include <stdio.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 soma (Ponto* p1, Ponto* p2) {
float dx = p2->x + p1->x;
return dx;
}
float sub (Ponto* p1, Ponto* p2) {
float dx = p2->y - p1->y;
return dx;
}
float L1 (Ponto* p1, Ponto* p2) {
float dx = p2->x - p1->x;
float dy = p2->y - p1->y;
return (dx + dy);
}
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 soma (Ponto* p1, Ponto* p2);
float sub (Ponto* p1, Ponto* p2);
float L1 (Ponto* p1, Ponto* p2);
#include <stdio.h>
#include "tad_r2.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 ponto: %f\n",c);
float d = soma (a,b);
printf ("Soma de dois pontos: %f\n",d);
float e = sub (a,b);
printf ("Subtraçao de dois pontos: %f\n",e);
float f = L1 (a,b);
printf ("Distancia L1 entre os pontos: %f\n",f);
libera(a);
libera(b);
return (0);
}