Viernes 8 de Noviembre de 2024, 20:44
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
aplicacion de java a c++
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: aplicacion de java a c++ (Leído 2895 veces)
dunkelheit
Nuevo Miembro
Mensajes: 14
aplicacion de java a c++
«
en:
Miércoles 30 de Septiembre de 2009, 21:51 »
0
Hola bueno estoy q practico con una aplicacion que implemento en java de comparacion de puntos, todo bien me salio pero ahora quiero implementar el mismo programa pero en C++... aca les dejo mi proyecto en java.
Código: Text
package prUegafigUras;
public class pUnto {
private double x;
private double y;
public pUnto () { this.setX(0); this.setY(0);
}
public pUnto (double x, double y) {
this.setX(x);
this.setY(y);
}
public boolean equals (Object refo) {
if(refo instanceof pUnto){
pUnto otro = (pUnto)refo;
return((this.x==otro.x)&&(this.y == otro.y));
}
else return false;
}
public double getX () {
return x;
}
public void setX (double x) {
this.x = x;
}
protected double getY () {
return y;
}
public void setY (double y) {
this.y = y;
}
public String toString () {
return this.getClass().getSimpleName()+"["+ this.getX()+","+ this.getY()+"]";
}
}
Código: Text
package prUegafigUras;
public class Demo {
public static void main (String[] args) {
pUnto p1= new pUnto();
pUnto p3 = new pUnto(0,0);
if(p1.equals(p3))System.out.println("p1=p3");
}
}
Para c++ estoy usando dev c++ 4.9, entonces cree mi proyecto con mi fichero.h y mi cpp
Código: Text
using namespace std;
class punto {
private: double x;
double y;
public:
punto();
punto(double x,double y);
bool equals(const punto& refo);
private:
void setX(double x);
void setY(double y);
protected:
double getY();
double getX();
};
bool punto::equals(const punto &refo){
//const punto* prefo = dynamic_cast<const punto*>(&refo);
punto otro = (punto) otro;
return ((this->x == otro.x) && (this->y == otro.y));
}
punto::punto() {
this->setX(0);
this->setY(0);
}
punto::punto(double x,double y) {
this->setX(x);
this->setY(y);
}
double punto::getX(){
return x;
}
void punto::setX(double x){
this->x = x ;
}
double punto::getY () {
return y;
}
void punto::setY (double y) {
this->y = y ;
}
main.cpp
Código: Text
#include <cstdlib>
#include <iostream>
#include "punto.h"
int main(){
int h;
punto h1;
punto* p1 = new punto();
punto* p2 = new punto(0,0);
//if(p1->equals(p2)){}
}
el problema es en comparar p1 con equals p2 y ahi recien imprimir si son iguales o no .... como lo haria en c++ ?? espero que me puedan ayudar. gracias de antemano
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: aplicacion de java a c++
«
Respuesta #1 en:
Miércoles 30 de Septiembre de 2009, 21:55 »
0
Podes sobrecargar el operador == y entonces hacer un comparacion (p1 == p2).
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
dunkelheit
Nuevo Miembro
Mensajes: 14
Re: aplicacion de java a c++
«
Respuesta #2 en:
Miércoles 30 de Septiembre de 2009, 22:00 »
0
hola gracias por responder pero al hacer
pero en el metodo equals
bool punto::equals(const punto &refo){
//const punto* prefo = dynamic_cast<const punto*>(&refo);
punto otro = (punto) otro;
return ((this->x == otro.x) && (this->y == otro.y));
}
esto no es la sobrecarga ?? o como seria no entiendo mucho porque recien me inicio en poo.. espero me puedas ayudar .gracias
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: aplicacion de java a c++
«
Respuesta #3 en:
Miércoles 30 de Septiembre de 2009, 22:05 »
0
No existe ese metodo en C++ por eso en su lugar podes sobrecargar el operador ==, mejor consegui un libro de C++, asi se te va a hacer mas facil.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
r0d
Miembro activo
Mensajes: 37
Nacionalidad:
Re: aplicacion de java a c++
«
Respuesta #4 en:
Miércoles 30 de Septiembre de 2009, 22:54 »
0
Hola,
Como lo dice Eternal Idol, el mejor es utilizar el oprador ==.
Aqui esta un ejemplo sencillisimo de una clase punto:
Código: Text
#include <iostream>
using namespace std;
struct Punto
{
Punto( int px = 0, int py = 0 ) : x(px), y(py) {} //constructor
int x;
int y;
bool operator == ( const Punto & pt ) const { return ( x==pt.x && y==pt.y ); } //sobrecarga del operador ==
};
int main()
{
Punto pt1; // mejor instanciar directamente, en la pila (sin hacer un new)
Punto pt2(2,3);
if ( pt1 == pt2 )
cout << "1" << endl;
pt1.x=2;
pt1.y=3;
if ( pt1 == pt2 )
cout << "2" << endl;
cout << "end" << endl;
cin.get();
return 0;
}
Las buenas practicas del C++ moderno
killrazor
Miembro activo
Mensajes: 44
Re: aplicacion de java a c++
«
Respuesta #5 en:
Miércoles 30 de Septiembre de 2009, 23:12 »
0
Hola,
tampoco estaria mal si los setters y getters los haces inline. Es una de las grandes ventajas de C++ y ganas algo de velocidad. Si programas en C++, ademas, puedes usar los namespace, para que tus librerias tengan paralelismo con los packages de java.
Lo tercero que veo es que usas las clases asi:
Código: C++
# punto* p1 = new punto();
# punto* p2 = new punto(0,0);
Pero C++ te da la facilidad de hacerlo de manera estatica o dinamica (que es como tu lo haces, con el new). De manera estatica se puede hacer asi
Código: C++
# punto p1 = punto();
dunkelheit
Nuevo Miembro
Mensajes: 14
Re: aplicacion de java a c++
«
Respuesta #6 en:
Miércoles 30 de Septiembre de 2009, 23:20 »
0
muchas gracias por su ayuda.. me sirvio mucho esta parte
#
# Punto pt1; // mejor instanciar directamente, en la pila (sin hacer un new)
# Punto pt2(2,3);
y tmb ver q OPERATOR era una palabra reservada yo pensaba que era un nombre de metodo cualquiera ...u.u errores de principiante ahora si me corrio el programa ..de verdad le agradesco a todos ustedes ^^
dunkelheit
Nuevo Miembro
Mensajes: 14
Re: aplicacion de java a c++
«
Respuesta #7 en:
Jueves 1 de Octubre de 2009, 00:32 »
0
disculpenme denuevo pero tratando de implementar mas el programa hize una clase heredada llamada circulo que coje los puntos de la clase punto... en java el equals es asi
Código: Java
public
boolean
equals
(
Object
refo
)
{
if
(
refo
instanceof
circUlo
)
{
pUnto otrop
=
(
pUnto
)
refo
;
pUnto estepUnto
=
new
pUnto
(
super
.
getX
(
)
,
super
.
getY
(
)
)
;
circUlo otroc
=
(
circUlo
)
refo
;
return
(
(
super
.
equals
(
otrop
)
)
&&
this
.
radio
==
otroc.
radio
)
;
}
else
return
false
;
}
asi que como ustedes me explicaron del operator == trate de hacerlo asi
Código: C++
bool
Circulo
::
operator
==
(
const
Circulo
&
ref
)
{
Circulo otroc
=
(
Circulo
)
ref
;
punto otrop
=
(
punto
)
ref
;
punto estepunto
(
punto
::
getX
(
)
,punto
::
getY
(
)
)
;
return
(
(
punto
::
operator
==
(
otrop
)
)
&&
(
this
-
>
radio
==
otroc.
radio
)
)
;
}
en el main implemente esto
Circulo c1;
Circulo c2(1,1,1);
y cuando pongo la condicion
Código: C++
if
(
c1
!
=
c2
)
{
cout
<<
"c1 != c2"
<<
endl
;
}
else
{
cout
<<
"c1 == c2"
<<
endl
;
}
me sale error : no match for 'operator!=' in 'c1 != c2'
y cuando pongo
Código: C++
if
(
c1
==
c2
)
{
cout
<<
"c1 == c2"
<<
endl
;
}
else
{
cout
<<
"c1 != c2"
<<
endl
;
}
me vota verdadero C1 == C2 cuando deberia ser falso
me e enredado un poco haciendo el operator cuando es de una clase heredada espero que me puedan ayudar . gracias ^^
r0d
Miembro activo
Mensajes: 37
Nacionalidad:
Re: aplicacion de java a c++
«
Respuesta #8 en:
Jueves 1 de Octubre de 2009, 02:13 »
0
Si quieres utilizar el
operador !=
, tienes que definirlo. Es igual que con el operador ==.
Luego, no entiendo tu codigo. ¿Porque circulo hereda de punto? Es que vamos, un circulo no tiene nada que ver con un punto ^^
Las buenas practicas del C++ moderno
dunkelheit
Nuevo Miembro
Mensajes: 14
Re: aplicacion de java a c++
«
Respuesta #9 en:
Jueves 1 de Octubre de 2009, 02:27 »
0
solo lo hago para comparacion de los contructores
Circulo c1;
Circulo c2(1,1,1);
donde los primeros 1,1 son heredados de la clase punto(1,1) en c2 y (0,0) para c1
para ver si son iguales. como les dije cuando pongo == sale como si fuera true y en verdad es falso ya q c1 seria (0,0,0) y c2 (1,1,1)
espero q me hayas entendido gracias
EI: juntando mensajes.
bueno gracias por la ayuda es como dijist en un comienzo declare el operador != y me funciono ..gracias ^^
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
aplicacion de java a c++