#include <stdio.h>
#include "funcao.h"
int main()
{
float x, y, soma, sub, manhattam;
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);
somaponto(a,b,&soma);
printf("O resultado da soma: %f\n",soma);
subponto(a,b,&sub);
printf("O resultado da sub: %f\n",sub);
distancia(a,b,&manhattam);
printf("O resultado da distancia de manhattan eh de: %f\n",manhattam);
//float c = distancia(a,b);
//printf("distacia entre os pontos: %f\n",c);
libera(a);
libera(b);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "funcao.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;
}
void somaponto (Ponto*v1, Ponto*v2, float*soma)
{
*soma = v1 -> x + v2 -> x;
}
void subponto (Ponto*v1, Ponto*v2, float*sub)
{
*sub = v1 -> x - v2->x;
}
void distancia(Ponto*p1, Ponto*p2, float*manhattam)
{
float dx = p2 -> x - p1 -> y;
float dy = p2 -> y - p1 -> y;
*manhattam = (dx*dx + dy*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);
void distancia (Ponto*p1, Ponto*p2, float*distancia);
void somaponto (Ponto*v1, Ponto*v2, float*soma);
void subponto (Ponto*v1, Ponto*v2, float*sub);