Escolar Documentos
Profissional Documentos
Cultura Documentos
ponto.h
/* TAD: Ponto 2D */
typedef struct ponto Ponto; // tipo exportado
circulo.h
/* TAD: Circulo */
/* Dependência de módulos */
#include "ponto.h"
/* Tipo exportado */
typedef struct circulo Circulo;
ponto.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "ponto.h"
struct ponto
{
float x;
float y;
};
void ptoLibera(Ponto * p)
{
free(p);
}
circulo.c
#include <stdlib.h>
#include "circulo.h"
#define PI 3.14159
struct circulo
{
Ponto * p;
float r;
};
void circLibera(Circulo * c)
{
ptoLibera(c->p);
free(c);
}
float circGetRaio(Circulo * c)
{
return c->r;
}
Ponto * circGetCentro(Circulo * c)
{
return c->p;
}
float circArea(Circulo * c)
{
return PI*c->r*c->r;
}
listaDeCirculos.h
#include "circulo.h"
struct elemento
{
2
Circulo * info;
struct elemento * prox;
};
typedef struct elemento Elemento;
listaDeCirculos.c
#include <stdlib.h>
#include <stdio.h>
#include "listaDeCirculos.h"
#include "circulo.h"
#include "ponto.h"
3
prog1.c
#include <stdio.h>
#include "circulo.h"
#include "listaDeCirculos.h"
int main(void)
{
Circulo * c1 = circCria(0, 0, 1);
Circulo * c2 = circCria(1, 1, 2);
Circulo * c3 = circCria(2, 2, 3);
Elemento * lst = NULL;
lst = lst_insere(lst, c3);
lst = lst_insere(lst, c2);
lst = lst_insere(lst, c1);
printf("Lista de Circulos:\n");
lst_print(lst);
printf("\nArea Total: %.3f\n", lst_somaArea(lst));
return 0;
}