Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sol

Como relacionar duas Classes em C++

Recommended Posts

Sol

Olá, boa noite!
Por favor estou a precisar de uma ajuda. Estou com dúvida em como relacionar as classes Ponto e Rectangulo de modo a calcular a area. O resultado esta sempre a dar zero. Quem puder ajudar por favor. Tentei de algumas formas mas estou a ter dificuldades nessa parte da cadeira. 
Agradeço qq ajuda!

 

#pragma once
class Ponto
{
private:
	int x, y; // coordenadas do ponto
public:
	Ponto(); // construtor por omissão
	Ponto(int x0, int y0); //construtor para atribuição
	void AtribuirXY(int novo_x, int novo_y); // novas coordenadas
	float ObterDistancia(Ponto p2); // calcula a distancia a um ponto p2
	int ObterX() { return x; }; // devolve a coordenada x
	int ObterY() { return y; } // devolve a coordenada y
};


#pragma once
#include "Ponto.h"

  
  
class Rectangulo
{
private:
	Ponto top_left, bottom_right;  // Cantos do rectângulo
public:
	Rectangulo(Ponto tl, Ponto br);
	Rectangulo(int x1, int y1, int x2, int y2);

	bool Contem(Ponto p);    // Verifica se o ponto p está contido no rectangulo
							 // corrente
	bool Contem(Rectangulo r);   // Verifica se o rectângulo r está contido no
							// rectangulo corrente
	double ObterArea();
	
};



#include "Rectangulo.h"
#include "Ponto.h"
#include <stdio.h>


Rectangulo::Rectangulo(Ponto tl, Ponto br)
{
    tl.AtribuirXY(top_left.ObterX(), top_left.ObterY());
	br.AtribuirXY(bottom_right.ObterX(), bottom_right.ObterY());

}
Rectangulo::Rectangulo(int x1, int y1, int x2, int y2)
{

    Ponto(x1,y1);
    Ponto(x2,y2);
	
}
bool Rectangulo::Contem(Ponto p)
{
	return 1;
}
bool Rectangulo::Contem(Rectangulo r)
{
	return 1;
}
double Rectangulo::ObterArea()
{
	double area;
	area = (bottom_right.ObterX() - top_left.ObterX()) * (bottom_right.ObterY() - top_left.ObterY());
	return area;
}





#include <stdio.h>
#include "Rectangulo.h"

#include "Ponto.h"


int main()
{

	printf("Programa que utiliza outra janela para os resultados.\n");

			Rectangulo r(242, 177, 892, 377);
			printf("\nArea do rectangulo: %0.2f\n", r.ObterArea());
			

}

 

Edited by Sol
Falta dados

Share this post


Link to post
Share on other sites
bsccara

Tu estás a usar o constructor que recebe quatro ints para criar a instância 'r'. Esse constructor cria duas instâncias da classe Ponto, usando os parametros passados, mas não as atribui aos membros 'top_left' e 'bottom_right'. Assim esses membros são inicializados implicitamente usando o constructor por defeito da classe Ponto, sendo inicializados a (0,0).

Share this post


Link to post
Share on other sites
Sol
2 horas atrás, bsccara disse:

Tu estás a usar o constructor que recebe quatro ints para criar a instância 'r'. Esse constructor cria duas instâncias da classe Ponto, usando os parametros passados, mas não as atribui aos membros 'top_left' e 'bottom_right'. Assim esses membros são inicializados implicitamente usando o constructor por defeito da classe Ponto, sendo inicializados a (0,0).

Entao, eu até percebi que estou a fazer isso. Mas como atribuir os parametros entao por favor? Fiz de varias formas e sem sucesso?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.