Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda con c++ y Java

Estas en el tema de Ayuda con c++ y Java en el foro de Programación General en Foros del Web. Debo Diseñar una clase denominada Integer para el manejo de este tipo de datos. La clase debe contemplar sobrecarga de operadores para las siguientes operaciones: ...
  #1 (permalink)  
Antiguo 09/06/2005, 07:38
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 19 años, 6 meses
Puntos: 1
Ayuda con c++ y Java

Debo Diseñar una clase denominada Integer para el manejo de este tipo de datos. La clase debe contemplar sobrecarga de operadores para las siguientes operaciones: +, -, *, /, =, ==, <=, >=, != y << (para el cout). Debo permitir la construcción de un nuevo objeto Integer a partir de un primitivo int o de otro Integer. Debo Diseñar una clase Float que herede de la clase Integer para el manejo de su parte entera y que incluya un nuevo atributo Integer para el manejo de su parte decimal. Para esta ultima debo sobrecargar también los operadores: +, -, *, /, =, ==, <=, >=, != y << (para el cout).

Tengo que programar lo mismo pero en java. Además de una interfaz grafica que muestre los resultados del uso correcto de las funciones y métodos por pantalla.

Cualquier tipo de ayuda o recomendacion para esto será bienvenido....PLEASE!!!!

THANKS!
  #2 (permalink)  
Antiguo 09/06/2005, 08:29
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Pues es bastante sencillo... No te lo vamos a hacer, eso evidente. Y recomendaciones... Tampoco ninguna... ¿Qué hay de dificultad en esa clase? Salvo sobrecargar << para cout, que lo debes hacer con "friend".

Si no sabes hacerlo olvida aprobar esa asignatura... ;)
  #3 (permalink)  
Antiguo 09/06/2005, 18:33
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
porque no buscas tutoriales de sobrecarga de operadores?
(en ingles es "operator overloading").
Creo que eso seria la unica dificultad.
Tutoriales en la red hay muchos para sobrecarga con c++.......
  #4 (permalink)  
Antiguo 09/06/2005, 20:03
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 19 años, 6 meses
Puntos: 1
Gracias por la ayuda, vamos a ver que sale!
  #5 (permalink)  
Antiguo 09/06/2005, 22:44
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 11 meses
Puntos: 0
Holas;

Sobrecarga de Operadores

Los operadores, al igual que las funciones, pueden ser Los operadores, al igual que las funciones, pueden ser sobrecargados (overloaded):
–La mayor parte de los operadores de C++ pueden ser redefinidos para actuar sobre objetos de una clase.
–Se puede cambiar la definición de un operador, pero no su gramática: nº de
operandos, precedencia y asociatividad.
–El tipo de los operandos determina qué definición del operador se va a utilizar.
–Al menos uno de los operandos debe ser un objeto de la clase.

La sintaxis para declarar un operador sobrecargado es la siguiente::
tipo operator operador([argumentos]);
Donde: tipo indica el tipo del valor retornado por la función, y operador es unos de los siguientes: +,-,*,/,%,&,!,>,<,=,[],new, delete, ...

Código:
classComplejo 
{
private:
     floa treal,imag;
public:
     Complejo(floatx,floaty) {real=x;imag=y;}
     Complejo operator+(Complejoc);
     void Print();
}

Complejo Complejo::operator+(Complejoc)
{
       return Complejo(real+c.real,imag+c.imag);
}
void main()
{
     Complejo c1(1.5,4.5);
     Complejo c2(-2,-1);
     Complejo c3 = c1+c2; //=c3=c1.operator+(c2);
     c3.Print();
}
Los operadores pueden definirse como Los operadores pueden definirse como miembros o como friends de una clase:
–En los operadores friend el número de argumentos debe ser el estándar del operador.
–Para los operadores miembro de una clase, el primer operando debe ser siempre un objeto de la clase. En la declaración y definición sólo hace falta definir el segundo argumento.
–Los operadores que modifican el primer operando se suelen declarar como miembros.
–Los operadores que no modifican los operandos suelen ser declarados como friend.
–Los operadores de asignación (=, +=, -=, …), deben ser sobrecargados por funciones miembro.

Código:
classComplejo
{
private:
   float real;
   float imag;
public:
   Complejo(floatx=0, floaty=0)
   {
        real=x; imag=y;
   }
   Complejo operator+(Complejoc);
   friend bool
     operator == (Complejoc1, Complejoc2);
   friend bool operator<(Complejo, Complejo);
   double mod()
   {
        return sqrt(real*real + imag*imag);
   }
   void Print();
};

bool operator<(Complejoc1, Complejoc2)
{
retur nc1.mod() < c2.mod();
}
//funcion amiga.Operador de relacion
bool operator==(Complejoc1, Complejoc2)
{
     if(c1.real==c2.real && c1.imag==c2.imag)
       return true;
     else return false;
}
void main()
{
    Complejoc1(1.5,4.5);Complejoc2(1.5,4.5);
    if(c1==c2) cout << "Soniguales";
    else cout << "Sondiferentes";
    (c1<c2)? cout << “Menor”: cout << “Nomenor”;
}
Sobrecarga del operador de inserción “<<“:

–C++ tiene una clase denominada ostream definida con el operador << para la salida de valores de tipos predefinidos (int, long, double, etc..).
Código:
class ostream
{
    //...
   public:
   //..
   ostream &operator<<(int);
   ostream &operator<<(double);
};
–La función operator<< retorna una referencia al objeto de tipo ostream que llamó, para que éste pueda ser aplicado a otro valor: cout << f1 << f2;
–Una forma sencilla de sobrecargar el operador << es implementar una función miembro amiga (friend)de esta clase, que tenga la siguiente forma:

friend ostream &operator<<(ostream &os, clase_usuario &c);

Donde os es una referencia a un objeto tipo ostream, en nuestro caso cout y c es una referencia a una clase del usuario que se desea visualizar.
En el cuerpo de la función irá una expresión de la siguiente forma:
os << valor1 << valor2 << valor3;
Código:
ostream &operator<<(ostream &os, Complejo &c)
{
    return ( os << "(" << c.r << "," << c.i << ")" );
}
Sobrecarga del operador de extracción “>>”:

–C++ tiene una clase denominada istream definida con el operador >> para la entrada de valores de tipos predefinidos (int, long, double, etc..).

Código:
class istream
{
    //...
    public:
   //..
   istream &operator>>(int);
   istream &operator>>(double);
};
–La función operator>>retorna una referencia al objeto de tipo ostream que llamó, para que éste pueda ser aplicado a otro valor: cin>> f1 >> f2;
–Una forma sencilla de sobrecargar el operador >> es implementar una función miembro amiga (friend)de esta clase, que tenga la siguiente forma:

friend istream &operator>>(istream &is,clase_usuario &c);

Donde ises una referencia a un objeto tipo istream, en nuestro caso cin y c es una referencia a una clase del usuario que se desea visualizar.
En el cuerpo de la función irá una expresión de la siguiente forma:
is>> valor1 >> valor2 >> valor3;
Código:
istream &operator>>(istream &is,Complejo &c)
{
       cout << "Escribauncomplejo:";
       return (is>>c.r>>c.i);
}
Código:
#include<iostream.h>

class Complejo
{
private:
     floatr,i;
public:
     Complejo(floatpr=0,floatpi=0)
    {
        r=pr;i=pi;
    }
    Complejo operator+(Complejoc);
    Complejo operator-(Complejoc);
    friend ostream &operator<<(ostream &os,Complejo&);
    friend istream &operator>>(istream &is, Complejo&);
    void Print() { cout << r << "," << i << "i\n"; }
};
Complejo Complejo::operator +(Complejo c)
{
       return Complejo(r+c.r,i+c.i);
}
Complejo Complejo::operator -(Complejo c)
{
       return Complejo(r-c.r,i-c.i);
}
ostream &operator<<(ostream &os, Complejo &c)
{
       return (os << "(" << c.r << "," << c.i << ")" );
}
istream &operator>>(istream &is, Complejo &c)
{
       cout<<"Escriba un complejo:";
       return(is >> c.r >> c.i);
}

void main()
{
    Complejo c1(3,4);
    Complejo c2(-2,1);
    Complejo c3(1,-2);
    Complejo r=c1+c2+c3;
    r.Print();
    //operadores
   Complejon, n1;
   cin >> n >> n1;
   cout << “Los complejos son:“;
   cout << n << "-“ << n1;
}
Es parte del tutorial de la Escuela superior de Ingenieros de San Sebastián, espero que te sirva, al igual que mí, recién estoy despegando...

Nos vemos.
  #6 (permalink)  
Antiguo 10/06/2005, 08:10
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
¿Cómo puede haber gente con tan poca visión?

Si no le ponemos el código es para que aprenda a hacerlo.
Si no le ponemos los tutoriales es para que los busque.

Pero no, siempre va alguien y la arma.
  #7 (permalink)  
Antiguo 10/06/2005, 09:19
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Jajajaja. Ahora si para que veas concuerdo contigo Maxextreme.
Aqui se ayuda, no se viene a que le hagan a uno la tarea, pero para varia siempre viene uno y le hace la tarea a otro, eso no es ayudar, eso es perjudicar. Asi no va a poder aprender...

Muy muy mal.
  #8 (permalink)  
Antiguo 10/06/2005, 10:49
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
que tiene de malo que ponga el tutorial?.
Esta muy bueno, y quiza no encuentre otro mejor en español, ademas de que no le esta resolviendo la tarea, solo dandole un tutorial de sobrecarga, que es diferente a hacer la clase Integer con sobrecarga.
En verdad esa me parece una mucho mejor ayuda que lo que di yo o alguno de ustedes, pero bueno, cada quien su forma de pensar.
  #9 (permalink)  
Antiguo 10/06/2005, 11:23
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Mira, depende de la pregunta.
Si alguien viene y dice: tengo que hacer esto.
Pues que mas que: que bien, hazlo, espero que termines.

Si alguien viene y dice miren, me dejaron ahcer esto, esto es lo que llevo pero tengo dudas sobre esto, ahi si, le ponemos codigo y le dames links a tutoriales y la ayuda que sea posible.

Ahora bien, el no dice exactament que ayuda quiere, el nos pone que es lo que debe de hacer y luego nos dice "Cualquier ayuda o recomendacion es bienvenida"

MMM pues que tipo de ayuda es la que quiere?

Aparte tu respuesta estubo muy muy bien:

"Busca tutoriales, hay muchos en internet"

pues si, esta perfecto, pero que le den de comer en a boca ya no.
Espero haberme explicado, no me gusta hacer la tarea de alguien.

Saludos
  #10 (permalink)  
Antiguo 10/06/2005, 11:42
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 19 años, 6 meses
Puntos: 1
Sorry si los hice pelear, agradezco las ayudas, jamas pense en pedir que me realizaran el programa, solo que me dieran ciertas pistas o ideas de como hacerla...
gracias por todo y sorry
  #11 (permalink)  
Antiguo 10/06/2005, 11:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
Cita:
Iniciado por Instru
Si alguien viene y dice miren, me dejaron ahcer esto, esto es lo que llevo pero tengo dudas sobre esto, ahi si, le ponemos codigo y le dames links a tutoriales y la ayuda que sea posible.
Es muy dificil empezar desde 0.
Y que mejor que te proporcionen una ayuda mas clara para empezar.
Se pierde menos tiempo y se gana mas experiencia.
Cuanto hubiera dado yo por tener un guia o una ayuda mas concisa de que pasos tenia que seguir cuando inicie en la programaicon de videojuegos.
Empece en un orden que no debia, y aunque en poco tiempo tuve conocimientos avanzados, a la hora de llevarlos a la practica no sabia como porque no tenia solidos los conocimientos basicos y tuve que empezar desde 0 de nuevo.
Claro que esa es mi experiencia, y por eso yo agradezco mas las ayudas mas precisas que cuando dicen "busca en internet" , "si no sbaes eso estas perdido...".
Claro que tampoco estoy a favor de que te resuelvan un problema completo. Y este no fue el caso.
  #12 (permalink)  
Antiguo 10/06/2005, 14:36
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por blackwind
Es muy dificil empezar desde 0.
Y que mejor que te proporcionen una ayuda mas clara para empezar.
Se pierde menos tiempo y se gana mas experiencia.
Cuanto hubiera dado yo por tener un guia o una ayuda mas concisa de que pasos tenia que seguir cuando inicie en la programaicon de videojuegos.
Empece en un orden que no debia, y aunque en poco tiempo tuve conocimientos avanzados, a la hora de llevarlos a la practica no sabia como porque no tenia solidos los conocimientos basicos y tuve que empezar desde 0 de nuevo.
Claro que esa es mi experiencia, y por eso yo agradezco mas las ayudas mas precisas que cuando dicen "busca en internet" , "si no sbaes eso estas perdido...".
Claro que tampoco estoy a favor de que te resuelvan un problema completo. Y este no fue el caso.
Verás, no estábamos hablando de ti, sino del tutorial que ha posteado entero antes.

No me parece normal... La verdad, tutoriales sobre C++ (y con ello sobrecarga) los hay a miles, no hace falta postear aquí nada. Si quiere, mejor que pregunte alguna duda concreta, por ejemplo cómo sobrecargar << en cout y parecidas, y se responden... Pero no ¡ale! un tutorial.

A mi juicio, lo que debe hacer es practicar y hacerlo solo, que no trae ninguna complicación, es lo básico de las clases de C++ porque si no no podrá hacer nada posterior.
  #13 (permalink)  
Antiguo 11/06/2005, 10:53
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 19 años, 6 meses
Puntos: 1
Thanks........
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:13.