Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/02/2004, 20:46
Avatar de Reynier
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
Mira mi clase ...

Mi clase principal es esta:
Código PHP:
 class CCodificador{
 private:
  
AnsiString cadenacadena_codificada;

  
int comparar(int iint j);

 public:
  
CCodificador();
  
void setCadena(AnsiString cad);
  
void ComprimeCad();
  
void Decodificar(AnsiString cad);
  
AnsiString getCadena();
  
AnsiString getCadenaComprimida();
  
ofstream &operator << (ofstream &out){
    
out << cadena.c_str()<<endl;
    
out << cadena_codificada.c_str();
   return 
out;
  }
  
ifstream &operator >>(ifstream &in){
    
in >> cadena_codificada.c_str();
    
in >> cadena.c_str();
   return 
in;
  }
}; 
ahora ahi los he sobrecargado, lo que pasa es que no me hace lo que yo quiero que es poner la cadena normal y la cadena codificada dentro del mismo archivo de salida. Pero me da problemas y solo me saca uno solo.

Esta es la implementación de las clases.
Código PHP:
 CCodificador::CCodificador(){
 
cadena "";
 
cadena_codificada "";
}
void CCodificador::setCadena(AnsiString cad){
 
cadena cad;
 
cadena_codificada "";
}
int CCodificador::comparar(int iint j) {
  
int aux 1;
  while (
cadena.c_str()[i+aux] == cadena.c_str()[j+aux]) aux++;
  return (
aux != 1)?aux:-1;
}
void CCodificador::ComprimeCad(){
 
TList Lista = new  TList();
 for (
int i 0cadena.Length()-1i++)
   for (
int j i+1cadena.Length(); j++) {
     
int aux;
     if (
cadena.c_str()[i] == cadena.c_str()[j] && (aux comparar(i,j)) > 0){
        
cadena.Delete(j+1,aux);
        
Nodo = new Nodo(aux,j-i,j+1);
        
Lista->Insert(0,t);
     }
 }
 
cadena_codificada cadena;
 
int count,aux;
 while (
Lista->Count 0) {
        
count 1;
        
Nodo t(0,0,0);
        
=  *(Nodo *) (Lista->First());
        
aux t.p;
        
Lista->Delete(0);
        while (
count <= Lista->Count){
          
aux += ((Nodo*)(Lista->First()))->p;
          
count++;
        }
        
cadena_codificada.Insert("COPIA("+IntToStr(t.i)+","+IntToStr(aux)+")",t.z);
 }
}

void CCodificador::DecodificarAnsiString cad){
  
int pos 0;
  while ((
pos cad.Pos("COPIA(")) != 0) {
    
cad.Delete(pos,6);
    
int aux1 StrToInt(cad.SubString(pos,cad.Pos(",")-pos));
    
cad.Delete(pos,cad.Pos(",")-pos+1);
    
int aux2 StrToInt(cad.SubString(pos,cad.Pos(")")-pos));
    
cad.Delete(pos,cad.Pos(")")-pos+1);
    
cad.Insert(cad.SubString(pos-aux2,aux1),pos);
  }
  
cadena cad;
}
AnsiString CCodificador::getCadena(){
 return 
cadena;
}
AnsiString CCodificador::getCadenaComprimida(){
  return 
cadena_codificada;

y esta es la llamada al metodo para escribir en un fichero
Código PHP:
 CCodificador Cod;
 
ifstream  fichero;
  
fichero.open("result.txt"ios_base::out );
  if(
fichero)
   
Caption "TRUE";
   
Cod >> fichero;

   
fichero.close(); 
me ayudan ??
__________________
Ing. Reynier Pérez Mira