int main(int argc, char** argv) { ListaD<Receta>* recetas = new ListaD<Receta>(); Archivo* libro_txt = new Archivo("Libro.txt"); libro_txt->abrir(); string* buffer; while( !libro_txt->isFinal() ) { buffer = libro_txt->leerCampos( ',', 3 ); recetas->agregar( new Receta( atoi( buffer[0].c_str() ), buffer[1] , atoi( buffer[2].c_str() )) ); } delete libro_txt; Archivo* ingrediente_txt = new Archivo("Ingrediente.txt"); ingrediente_txt->abrir(); bool continuar; Ingrediente* ingredAux; string linea; string nom; int cal; int codigo; while( !ingrediente_txt->isFinal() ) { linea = ingrediente_txt->leerLinea(); nom = linea.substr(0, linea.find(',')); linea = linea.substr( linea.find(',') + 1 ); cal = atoi( linea.substr(0, linea.find(',')).c_str() ); linea = linea.substr( linea.find(',') + 1 ); ingredAux = new Ingrediente( nom, cal ); continuar = true; while( continuar ) { if ( linea.find(',') == string::npos ) continuar = false; codigo = atoi( linea.substr(0, linea.find(',')).c_str() ); linea = linea.substr( linea.find(',') + 1); for( int x = 0; x < recetas->getSize(); x++ ) { if( recetas->getElemento_info(x)->codigo == codigo ) { // recetas->getElemento_info(x)->ingredientes->agregar(ingredAux); recetas->getElemento_info(x)->ingredientes->agregar( new Ingrediente(*ingredAux) ); } } } // fin del while } // fin del while recetas->imprimir(); cout << endl; for( int x = 0; x < recetas->getSize(); x++ ) { recetas->getElemento_info(x)->ingredientes->imprimir(); } ingredAux = new Ingrediente(); Nodo<Ingrediente>* nodoIngAux; Nodo<Receta>* nodoRecAux; Receta* recAux = new Receta(); cout << endl << endl; cout << "Ingrese el codigo de una receta... "; recetas->imprimir(); cout << "Codigo: "; cin >> codigo; recAux->codigo = codigo; nodoRecAux = recetas->buscar(recAux); if( nodoRecAux ) { cout << "Lo ingredientes de la receta son: " << endl; nodoRecAux->getInfo()->ingredientes->imprimir(); cout << "Desea modificar las calorias totales(Ingrese 1)" << endl; cout << "Dese modificar las calorias de un ingrediente(Ingrese 2)" << endl; cin >> codigo; if( codigo == 1 ) { cout << "Ingrese las calorias de la receta: "; cin >> cal; nodoRecAux->getInfo()->calorias = cal; }else if( codigo == 2 )
// procesa los datos void procesarDatos() { ListaD<char>* lista_claves = new ListaD<char>( true, true ); // instancio lista doble string buffer; // almacena datos // crea la lista doblemente enlazada de letras Archivo* claves = new Archivo( "claves.txt" ); // asocio archivo claves.txt cout << claves->abrir() << endl << endl; // abro claves.txt // mientras no llegue al final de claves.txt while( !claves->isFinal() ) { buffer = claves->leerCampo( ' ' ); // leo clave lista_claves->agregar( (char*)buffer.c_str(), ListaD<char>::AGRE_CRE, true ); // agrego clave a la lista } // fin del while lista_claves->imprimir(); lista_claves->imprimir(true); delete claves; // libero recursos cout << endl << endl; // descifrar el mensaje Nodo<char>* clave = lista_claves->getCab(); // apunto a la cab de la lista Archivo* mensa = new Archivo( "mensa.txt" ); // asocio archivo mensa.txt Archivo* salida = new Archivo( "salida.txt" ); // asocio archivo salida.txt(no existe) int sentido; // sentido del recorrido int recorrido; // distancia(Nodos) a recorrer char clave_escribir; // clave a escribir en el archivo salida.txt cout << mensa->abrir() << endl; // aperturo mensa.txt cout << salida->crear() << endl; // creo salida.txt para escritura // mientras no llegue al fin de mensa.txt while( !mensa->isFinal() ) { buffer = mensa->leerCampo( ' ' ); // leo los tres digitos sentido = atoi( buffer.c_str() ) / 100; // obtengo sentido del recorrido recorrido = ( atoi( buffer.c_str() ) % 100 ) - 1; // obtengo la distancia // recorrido hasta la clave especificada por recorrido for( ; recorrido > 0; recorrido-- ) { // si el sentido es a la dereche, clave sera su sucesor, de lo contrario, clave sera clave = ( sentido == 1 ? clave->getLink_suc() : clave->getLink_pre() ); // su predecesor } // fin del for clave_escribir = clave->getInfo(); // obtengo clave del Nodo salida->escribir( clave_escribir ); // escribo clave en salida.txt } // fin del while salida->escribir( "", true ); // obligo al flujo a escribir delete mensa, salida; // libero recursos de archivos } // fin de procesarDatos