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

Sobrecarga de operadores

Estas en el tema de Sobrecarga de operadores en el foro de Programación General en Foros del Web. Hola me han dado para hacer el siguiente ejercicio imlementado en C++. Cita: Un algoritmo de compresión dado se basa en la repetición de secuencias ...
  #1 (permalink)  
Antiguo 20/01/2004, 00:22
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Sobrecarga de operadores

Hola me han dado para hacer el siguiente ejercicio imlementado en C++.
Cita:
Un algoritmo de compresión dado se basa en la repetición de secuencias que suelen existir en los ficheros. El programa lee un fichero y devuelve un fichero de salida comprimido. Si se encuentra una secuencia larga que apareció con anterioridad se sustituye la secuencia por una referencia COPIA(X, Y), que indica que en ese lugar se deben colocar X caracteres empezando por los que aparecieron Y posiciones antes en ese mismo fichero. Por ejemplo, la cadena: “Modulador-Demodulador...” se comprimiría como: “Modulador-DemCOPIA(8, 12)...”. Utilizando árboles se facilitaría la búsqueda de secuencias que han aparecido con anterioridad.

Describe las principales características de la estructura de árboles en esta aplicación y como sería manejado el árbol en el proceso de compresión.

Implemente los TDA necesarios, sobrecargue los operadores de cout y cin para la lectura y escritura en el fichero, la aplicación debe de dar la posibilidad de mostrar, visualmente, un mapa del documento comprimido.
La duda mia es como sobrecargar el operador cin y cout para leer y escribir en el fichero.
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 23/01/2004, 16:01
 
Fecha de Ingreso: septiembre-2003
Mensajes: 172
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola!

Cin y cout no son más que objetos de clases declaradas en la libreria iostream.h , en concreto cin es un objeto de istream, supongo que cout debe ser de ostream... Por lo tanto la sobrecarga seria:
"retorno de la funcion" operator >> (istream & entrada, "tipo clase/variable de salida" "clase/variable de salida" )
Ahi va un ejemplo, en mi caso tenia que leer un grafo desde un archivo, por eso el segundo parametro del operador era una referencia a un objeto de esa clase. He borrado el código que no te interesa para no liarte mas.

// -----------------
// esta sobrecarga no es de la clase, es una funcion amiga de la clase
// puede acceder a la parte privada de la clase

istream & operator >> (istream & entrada,CGraf & graf)
{entrada>>graf.dim; //leemos la dimension, dentro de la funcion el operador >> es el propio de la clase istream
}

Saludos! Espero haberme explicado algo! jeje ;p
__________________
Sr.Propio
  #3 (permalink)  
Antiguo 23/01/2004, 17:42
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Gracias rafapaskual

Lo había resuelto de esta manera incluia la librería #include <fstream.h> y lo sobrecargaba así
Código:
 ofstream &operator <<(ofstream &out){
   out << cadena_codificada.c_str()<<endl;
   return out;
  }
  ifstream &operator >>(ifstream &in){
   char temp[255] = {NULL};
   in >> temp;
   cadena_codificada  = temp;
   return in;
  }
__________________
Ing. Reynier Pérez Mira
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 00:41.