Tema: Ayuda
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2010, 10:57
ShineV2
 
Fecha de Ingreso: mayo-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Ayuda

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