Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: matver en 9 Febrero 2018, 15:32 PM

Título: Perimetro de cuadrado
Publicado por: matver en 9 Febrero 2018, 15:32 PM
Hola estoy tratando de resolver ejercicios con la POO y ahora trato de resolver el perimetro de un cuadrado pero el compilador gcc me da error:
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
class Cuadrado {
    public:
      int Base;
      int Altura;

};

int main (){
Cuadrado cuadrado1;
int perimetro=0;
cuadrado1.Base=2;
cuadrado1.Altura=2;
perimetro= Base* Altura;
cout<<"El perimetro del cuadrado es:"<<perimetro<<endl;

return 0;




Error: error: 'Base' was not declared in this scope
perimetro= Base* Altura;
            ^
perimetro.cpp:15:18: error: 'Altura' was not declared in this scope
perimetro= Base* Altura;
                  ^
Título: Re: Perimetro de cuadrado
Publicado por: matver en 9 Febrero 2018, 15:51 PM
El error estaba en la linea 15 que debería ser así:
perimetro=cuadrado1.Base*cuadrado1.Altura;
Título: Re: Perimetro de cuadrado
Publicado por: Machacador en 9 Febrero 2018, 15:58 PM
No hagas doble post... utiliza el botón modificar que tienes arriba a la derecha en tu post...

:rolleyes: :o :rolleyes:

Saludos.
Título: Re: Perimetro de cuadrado
Publicado por: A.I. en 9 Febrero 2018, 17:34 PM
Tienes algunos conceptos sobre los cuadrados equivocados. En un cuadrado la base y la altura son iguales. Además el perímetro se calcularía multiplicando un lado por 4. Si haces lado^2 estás calculando el área.

Por otro lado la rutina para calcular el perímetro probablemente debería ser un método de la clase cuadrado.

Saludos!
Título: Re: Perimetro de cuadrado
Publicado por: marcebond en 20 Febrero 2018, 02:21 AM
Compi, no se trata de que en 'main'' hagas todo el trabajo, debes repasar conceptos como 'encapsulación', los objetos son los que saben sobre sí mismos y como comportarse, echa un ojo, en main simplemente los creas y los muestras, incluso podríamos haberles dado la capacidad de imprimirse ellos solos (incluso sobrecargando el operador <<) pero es demasiado, repasa...

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

class Cuadrado {
private:
    float lado;

public:

    Cuadrado(float lado) {
        this->lado = lado;
    }

    float obtenerLado() {
        return this->lado;
    }

    float obtenerArea() {
        return this->lado * this->lado;
    }

    float obtenerPerimetro() {
        return this->lado * 4;
    }

};

int main(void) {
    Cuadrado c1(2), c2(7);

    cout
        << "Cuadrado 'c1'" << endl
        << "Lado: " << c1.obtenerLado() << endl
        << "Área: " << c1.obtenerArea() << endl
        << "Perímetro: " << c1.obtenerPerimetro() << endl << endl;

    cout
        << "Cuadrado 'c2'" << endl
        << "Lado: " << c2.obtenerLado() << endl
        << "Área: " << c2.obtenerArea() << endl
        << "Perímetro: " << c2.obtenerPerimetro() << endl << endl;
}