// 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 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 buf_elenco; Lista 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 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 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 == ')'); }