All pastes #250971 Raw Edit

Someone

public text v1 · immutable
#250971 ·published 2006-11-17 16:32 UTC
rendered paste body
// guarda un teatro
void Teatro :: guardar (std::ostream & os) const {
        char cab = ENCABEZADO_ARCHIVO;
        os << "(" << cab << " ";
        
        // Guardar listas x 4

        // guardo la lista de salas
        os << "[";
        int i = 0;
        while(i < sals.longitud() - 1) {
                sals.iesimo(i).guardar(os);
                os << ",";
                i++;
        }
        if (i < sals.longitud) {
                os << sals.iesimo(i);
        }
        os << "]";

        os << " ";

        // guardo la lista del elenco estable y sus sueldos
        os << "[";
        i = 0;
        while (i < elenco.longitud() - 1) {
                os << elenco.iesimo(i) << "," << sueldos.iesimo(i) << ",";
                i++;
        }
        if (i < elenco.longitud()) {
                os << elenco.iesimo(i) << "," << sueldos.iesimo(i);
        }
        os << "]";

        os << " ";

        // guardo la lista de funciones
        os << "[";
        i = 0;
        while(i < funcs.longitud() - 1) {
                funcs.iesimo(i).guardar(os);
                os << ",";
                i++;
        }
        if (i < funcs.longitud) {
                os << funcs.iesimo(i);
        }
        os << "]";

        os << " ";

        // guardo la lista de entradas vendidas
        os << "[";
        i = 0;
        while(i < entradas.longitud() - 1) {
                entradas.iesimo(i).guardar(os);
                os << ",";
                i++;
        }
        if (i < entradas.longitud) {
                os << entradas.iesimo(i);
        }
        os << "]";

        os << ")";
}

// carga un teatro a partir de un input stream
void Teatro :: cargar (std::istream & is) {
        char buf;

        // nimiedades
        is >> buf;        
        assert(buf == '(');

        is >> buf;
        assert(buf == 'T');

        is >> buf;
        assert(buf == ' ');

        // leo la lista de salas
        Lista<Sala> buf_salas;

        is >> buf;
        assert(buf == '[');
        
        bool seguir = True;
        while(seguir) {
                Sala s;
                s.cargar(is);
                buf_salas.agregarAtras(s);

                is >> buf;

                // si termino la lista, salgo
                if(buf == ']') {
                        seguir = False;
                }
        }

        salas = buf_salas;

        // nimiedades
        is >> buf;
        assert(buf == ' ');
        

        // leo las listas del elenco estable y sus sueldos
        is >> buf;
        assert(buf == '[');

        Lista<std :: string> buf_elenco;
        Lista<int> buf_sueldos;

        seguir = True;
        while(seguir) {
                
                String temp_actor = "";
                Int temp_sueldo;

                is >> buf;
                
                if (buf == ']') {
                        seguir = False;
                }
                else {
                        // leo el nombre del actor
                        while(buf != ',') {
                                temp_actor += buf;
                                is >> buf;
                        }

                        // leo su sueldo (un int)
                        is >> temp_sueldo;
                        
                        // los cargo
                        buf_elenco.agregarAtras(temp_actor);
                        buf_sueldos.agregarAtras(temp_sueldo);

                        // si lo que sigue es una coma, la saco
                        char p = is.peek();
                        if (p == ',') {
                                is >> buf;
                        }
                }
        }
        
        elenco = buf_elenco;
        sueldos = buf_sueldos;


        // nimiedades
        is >> buf;
        assert(buf == ' ');

        // leo la lista de funciones
        Lista<Funcion> buf_funciones;

        is >> buf;
        assert(buf == '[');
        
        seguir = True;
        while(seguir) {
                Funcion f;
                f.cargar(is);
                buf_funciones.agregarAtras(f);

                is >> buf;

                // si termino la lista, salgo
                if(buf == ']') {
                        seguir = False;
                }
        }

        funciones = buf_funciones;
        
        // nimiedades
        is >> buf;
        assert(buf == ' ');

        // leo la lista de entradas vendidas
        Lista<Entrada> buf_entradas;

        is >> buf;
        assert(buf == '[');
        
        seguir = True;
        while(seguir) {
                Entrada e;
                e.cargar(is);
                buf_entradas.agregarAtras(e);

                is >> buf;

                // si termino la lista, salgo
                if(buf == ']') {
                        seguir = False;
                }
        }

        entradas = buf_entradas;

        // nimiedades
        is >> buf;
        assert(buf == ')');
}