From f5f954c4c6c56e3ad3bfd97f592bef84b06da90d Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 21 Sep 2003 00:24:51 +0000 Subject: [PATCH] =?utf8?q?Se=20termina=20el=20trabajo=20pr=C3=A1ctico.=20S?= =?utf8?q?=C3=B3lo=20falta=20el=20informe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Makefile | 25 ++++++++++++++++++----- circulo.cpp | 3 ++- dibujo.cpp | 1 + figura.cpp | 21 ++++++++++++++++--- linea.cpp | 6 ++++-- punto.h | 9 ++++++++- rectangulo.cpp | 3 ++- tp3.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 tp3.cpp diff --git a/Makefile b/Makefile index f742ab1..dec807f 100644 --- a/Makefile +++ b/Makefile @@ -14,11 +14,11 @@ # # Opciones para el compilador. -#CXXFLAGS=-ansi -pedantic -Wall -O3 -CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG +CXXFLAGS=-ansi -pedantic -Wall -O3 +#CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG # Pruebas. -TESTS= +TESTS=dllist_test # Programa a compilar. TARGETS=$(TESTS) tp3 @@ -28,12 +28,27 @@ all: $(TARGETS) # Pruebas. tests: $(TESTS) + ./dllist_test dllist_test: dllist.o -memdebug_test: dllist.o meminfo.o memdebug.o +tp3: dllist.o figura.o rectangulo.o cuadrado.o linea.o circulo.o dibujo.o + +dllist.o: dllist.cpp dllist.h + +figura.o: figura.cpp figura.h punto.h + +linea.o: figura.o linea.cpp linea.h + +circulo.o: figura.o circulo.cpp circulo.h + +rectangulo.o: figura.o rectangulo.cpp rectangulo.h + +cuadrado.o: rectangulo.o cuadrado.cpp cuadrado.h + +dibujo.o: dllist.o figura.o dibujo.cpp dibujo.h + -parser_equation_test: dllist.o strutil.o meminfo.o memdebug.o parseerror.o # Regla para borrar. clean: diff --git a/circulo.cpp b/circulo.cpp index 6a1a7c0..3fe2405 100644 --- a/circulo.cpp +++ b/circulo.cpp @@ -35,7 +35,8 @@ Circulo::~Circulo(void) { } void Circulo::dibujar(std::ostream& out) const { + out << "Circulo("; Figura::dibujar(out); - out << ", radio: " << radio; + out << ", radio(" << radio << "))"; } diff --git a/dibujo.cpp b/dibujo.cpp index e591cd7..8232f5f 100644 --- a/dibujo.cpp +++ b/dibujo.cpp @@ -47,6 +47,7 @@ void Dibujo::dibujar(std::ostream& out) { // Dibujo cada elemento. for (Figura* f = static_cast(figuras.begin()); figuras.have_more(); f = static_cast(figuras.next())) { + out << "Dibujando: "; f->dibujar(out); out << std::endl; } diff --git a/figura.cpp b/figura.cpp index f228a16..1d81d9a 100644 --- a/figura.cpp +++ b/figura.cpp @@ -22,7 +22,21 @@ #endif Figura::Figura(size_t color, size_t grosor, const Punto& centro, - const char* nombre): color(color), grosor(grosor), centro(centro) { + const char* nombre): centro(centro) { + if (color > 15) { + this->color = 15; + } else if (color < 0) { + this->color = 0; + } else { + this->color = color; + } + if (grosor > 10) { + this->grosor = 10; + } else if (grosor < 1) { + this->grosor = 1; + } else { + this->grosor = grosor; + } #ifdef DEBUG std::cerr << "En constructor de Figura." << std::endl; #endif @@ -36,8 +50,9 @@ Figura::~Figura(void) { } void Figura::dibujar(std::ostream& out) const { - out << "color: " << color << ", grosor: " << grosor - << ", nombre: " << nombre << ", centro: "; + out << "color(" << color << "), grosor(" << grosor + << "), nombre(" << nombre << "), centro("; centro.dibujar(out); + out << ")"; } diff --git a/linea.cpp b/linea.cpp index 5eeae03..af5f329 100644 --- a/linea.cpp +++ b/linea.cpp @@ -35,10 +35,12 @@ Linea::~Linea(void) { } void Linea::dibujar(std::ostream& out) const { + out << "Linea("; Figura::dibujar(out); - out << ", ini: "; + out << ", ini("; ini.dibujar(out); - out << ", fin: "; + out << "), fin("; fin.dibujar(out); + out << "))"; } diff --git a/punto.h b/punto.h index c9d9ee0..55c4476 100644 --- a/punto.h +++ b/punto.h @@ -39,6 +39,13 @@ struct Punto { #endif } + /// Constructor de copia. + Punto(const Punto& p): x(p.x), y(p.y) { +#ifdef DEBUG + std::cerr << "En constructor de copia de Punto." << std::endl; +#endif + } + /// Destructor. virtual ~Punto(void) { #ifdef DEBUG @@ -48,7 +55,7 @@ struct Punto { /// Dibuja un punto. virtual void dibujar(std::ostream& out) const { - out << "(" << x << "," << y << ")"; + out << "Punto(" << x << ", " << y << ")"; } }; diff --git a/rectangulo.cpp b/rectangulo.cpp index 44cf975..450e670 100644 --- a/rectangulo.cpp +++ b/rectangulo.cpp @@ -35,7 +35,8 @@ Rectangulo::~Rectangulo(void) { } void Rectangulo::dibujar(std::ostream& out) const { + out << "Rectangulo("; Figura::dibujar(out); - out << ", ancho: " << ancho << ", alto: " << alto; + out << ", ancho(" << ancho << "), alto(" << alto << "))"; } diff --git a/tp3.cpp b/tp3.cpp new file mode 100644 index 0000000..11e602e --- /dev/null +++ b/tp3.cpp @@ -0,0 +1,55 @@ +/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80: + * + * Taller de Programación (75.42). + * + * Ejercicio Número 3: + * Lista de figuras. + * + * Copyleft 2003 - Leandro Lucarella + * Puede copiar, modificar y distribuir este programa bajo los términos de + * la licencia GPL (http://www.gnu.org/). + * + * Creado: sáb sep 20 19:52:13 ART 2003 + * + * $Id$ + */ + +#include "dibujo.h" +#include "rectangulo.h" +#include "cuadrado.h" +#include "linea.h" +#include "circulo.h" +#include + +/** + * Programa para probar la DLList. + * + * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un + * error. + */ +int main(void) { + Dibujo dibujo; + + // Creo y agrego un rectángulo. + dibujo.agregar_figura(new Rectangulo(1, 10, Punto(1.1, -0.4), + "rectángulo 1", 20.5, 10.2)); + + // Creo y agrego un cuadrado. + dibujo.agregar_figura(new Cuadrado(0, 210, Punto(1.1, -0.4), "cuadrado 1", + 0.25)); + + // Creo y agrego una línea. + dibujo.agregar_figura(new Linea(120, 0, Punto(1.1, -0.4), "línea 1", + Punto(11.5, -10.4), Punto(0, 0))); + + // Creo y agrego un círculo. + dibujo.agregar_figura(new Circulo(4, 8, Punto(1.1, -0.4), "círculo 1", + 12.25)); + + // Dibujo y libero todo. + dibujo.dibujar(std::cout); + dibujo.borrar_todo(); + + return EXIT_SUCCESS; +} + -- 2.43.0