Hola muy buenas como os va.
Soy nuevo en programacion c++ orientada a objeto. Me mandaron un ejercicio que aunqye parezca sencillo de hacer los resultados que obtengo de el no son los esperados.
A continuación os pongo el código:
Cabecera:
#include <stdio.h>
class Cuadrado
{
protected: //private en el real
unsigned int lado;
public:
Cuadrado(unsigned int a);
unsigned int area();
unsigned int perimetro();
void visualizar();
};
class Rectangulo:public Cuadrado
{
private:
unsigned int otroLado;
public:
Rectangulo(unsigned int a, unsigned int b);
unsigned int area();
unsigned int perimetro();
};
Fichero figuras.cpp
#include "Figuras.h"
Cuadrado::Cuadrado(unsigned int a)
{
lado = a;
}
unsigned int Cuadrado::area()
{
lado = lado * lado;
return lado;
}
unsigned int Cuadrado::perimetro()
{
lado = lado * 4;
return lado;
}
void Cuadrado::visualizar()
{
printf("El area es: %d
", area);
printf("El perimetro es:%d
", perimetro);
}
Rectangulo::Rectangulo(unsigned int a,unsigned int b) : Cuadrado(a)
{
lado = a;
otroLado = b;
}
unsigned int Rectangulo::area()
{
lado = lado * otroLado;
return lado;
}
unsigned int Rectangulo::perimetro()
{
lado = 2 * lado + 2 * otroLado;
return lado;
}
Principal
#include "Figuras.h"
void main()
{
Cuadrado* c1 = new Cuadrado(3);
Rectangulo* c2 = new Rectangulo(4,2);
printf("Cuadrado:
");
c1->visualizar();
printf("Rectangulo:
");
c2->visualizar();
}
FIN
Los resultados que obtengo después de compilar y enlazar son los siguintes:
Cuadrado:
El area es: 4198440
perimetro: 4198430
y los mismo resultados para el rectangulo ya que c2 del main apunta a visulizar().
Nota. En la cabecera la clase Cuadrado tiene miembros privados en relidad, los puse cmom rotegidos con el din de obtener un resultado numerico, ya que si los dejo como pribado la calse derivada no podrá acceder
Mi preguntas son:
-Sabe alguien como solucionar el problema osea que salga com resultados
Cuadrado area: 9
Cuadrao perimetro 12
Rectangulo area : 8
Perimetro 12.
Si lo sabe alguien por favor que escriba el código o bien que me mande u privado con las lineas de código erroneas.
he probado con todo y simepre me sailan esos resultados que a mi parecer son direcciones de memoria.
Otra pregunta:
El apartado segundo del ejericcio propone construi una clase abstracta, alguien me puede explicar como se hacen y como serai en el ejercicio?
Bueno eso es todo por ahora, a quien aporte ideas sean las que sean, gracias.
Aqui les pongo las preguntas del ejercicio:
Crear un proyecto denominado FigHer, en el cual:
a) Desarrollar el fichero figuras.cpp donde el método visualiza se encarga de mostrar los valores del Area y el Perímetro de un Cuadrado
b) Desarrollar el fichero principal.cpp con el siguiente contenido:
b.1) Definir un cuadrado de lado 3 y un rectángulo de lados 4 y 2 en Memoria Dinámica.
b.2) Mandar el mensaje visualiza tanto al cuadrado como al rectángulo
c) Comentar los resultados obtenidos.
Crear un proyecto denominado FigHerAbs, en el cual :
a) Se introduzca una Clase Abstracta denominada Figura que resuelva la cuestión planteada.
pos nada gracias de nuevo