All pastes #250950 Raw Edit

Mine

public text v1 · immutable
#250950 ·published 2006-11-17 15:53 UTC
rendered paste body
void Funcion :: guardar(std::ostream &arch ) const{
     char y = ENCABEZADO_ARCHIVO;
     arch<<'('<<y<<' '<<'|'<<s<<"| |"<<o<<"| ";
     f.guardar(arch);
     arch<<" ";
     h.guardar(arch);
     arch<<" "<<dur<<" [";
     int i = 0;
     while(i < ele.longitud() - 1){
             arch<<ele.iesimo(i)<<',';
             i++;
     }
     if( i < ele.longitud()){
         arch<<ele.iesimo(i);
     }
     arch<<"] [";
     i = 0;
     while(i < cont.longitud() -1){
             arch<<cont.iesimo(i)<<","<<cach.iesimo(i)<<",";
             i++;
     }
     if(i < cont.longitud())
          arch<<cont.iesimo(i)<<","<<cach.iesimo(i);
     arch<<"] [";
     i = 0;
     while(i < pre.longitud() - 1){
             arch<<pre.iesimo(i)<<",";
             i++;
     }
     if( i < pre.longitud())
         arch<<pre.iesimo(i);
     arch<<"])";
}

void Funcion :: cargar(std::istream & is ){
     int i = 0;
     string sal ="", obra = "";
     while(i < 4){
             is.get(); // agarra el parentesis, encabezado, espacio, pipe;
             i++;
     }
     /*is>>sal;
     while(sal[sal.length()-1 ]!= '|'){ // agarra el nombre con espacios hasta q el ultimo caracter es el pipe
        string aux;
        is>>aux;
        sal += " ";
        sal += aux;
    }*/
    agarrarNombre(is,sal); //borra el pipe
    is.get();
    is.get(); //agarran espacio pipe
    agarrarNombre(is, obra);
    s = sal;
    o = obra;
    is.get();
    f.cargar(is);
    is.get();
    h.cargar(is);
    is.get();
    is>>dur;
    is.get(); // espacio
    char x;
     is.get();
     string nombre = "";
     Lista<string> elenco;
    x = is.get();   //puede ser una letra o un corchete cerrado 
    while(x != ']'){
            while(x != ',' && x != ']'){
                   nombre += x;
                    x=is.get();
            }
            elenco.agregarAtras(nombre);
            nombre = "";
            if(x != ']')
            x = is.get();
            
            }
    ele = elenco;
    is.get(); //agarra espacio
    x= is.get();
    Lista<string> contrat;
    string nombcont = "";
    int cachet;
    Lista<int> cachs;
    x=is.get();
    while(x != ']'){
            if(x == ',')
                 x=is.get();
            else{
            while(x != ','){
                    nombcont += x;
                    x=is.get();
            }
            contrat.agregarAtras(nombcont);
            nombcont = "";
                is>>cachet;
                cachs.agregarAtras(cachet);
            x = is.get();
            }
    }
    cont = contrat;
    cach = cachs;
    is.get(); // espacio;
    x =is.get();
    int prec;
    Lista<int> precios;
    while(x != ']'){
            is>>prec;
            x=is.get();
            precios.agregarAtras(prec);
    }
    is.get();
    pre = precios;
}

void Funcion :: agarrarNombre(std :: istream & is, std :: string & sal){
     is>>sal;
     while(sal[sal.length()-1 ]!= '|'){ // agarra el nombre con espacios hasta q el ultimo caracter es el pipe
        string aux;
        is>>aux;
        sal += " ";
        sal += aux;
    }                       
    sal.erase((sal.length()-1), 1);
}