| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Lionheart23
Registrado: 25 Abr 2014 Mensajes: 1
| Publicado: 25/04/2014 12:32 am | | | Título: Duda de error |
| Tengo el siguiente codigo en C++
list<string> Libro::leer() { list<string> palabras; cin >> ISBN; cin >> ao; cin >> Ncap; cin.get(); //Para quitar de la entrada el salto de linea getline(cin,Titulo); getline(cin,Autores); palabras.push_back(Titulo); aparicion ap; contCapitulos=1; contParrafos=1; Libro lib = *this; int y = ap.leerAparicion(lib,contCapitulos,contParrafos); int u;
NPar = 1; if (y==0) NPalabras = 1; else NPalabras = 0; while(y!=1){ u = y; y = ap.leerAparicion(lib,contCapitulos,contParrafos); palabras.push_back(ap.getPalabra()); if (y==0) NPalabras++; else if ((y==2) && (y!=u)) {aumentaParrafos(); NPar++;} else if (y==3) { aumentaCapitulos(); reinicioParrafos(); if (u!=2) NPar++;} } if (u==2) NPar--;
return palabras; }
Y la clase aparicion esta definida asi:
string siguienteLetra() { unsigned int str; //Int donde estara el valor entero de la letra string letra; str = cin.get(); //con cin.get() vamos obteniendo las letras de 1 en 1. if (cin.eof()) return "-"; if (str == 32) { return " ";
} else if ((str >= 65) && str <= 90) { str = tolower(str); letra = (char)str; return letra; } else if (str == 195) { str = cin.get(); switch (str) { case 161: return "a"; break; case 177: return "ñ"; break; case 169: return "e"; break; case 186: return "u"; break; case 173: return "i"; break; case 179: return "o"; break; case 188: return "u"; break; case 129: return "a"; break; case 137: return "e"; break; case 141: return "i"; break; case 147: return "o"; break; case 154: return "u"; break; case 156: return "u" ; break; case 145 : return "ñ"; break; default: return " "; } } else if (str == 10) { letra = "\n"; return letra;} else if (str >= 97 && str <= 122) { letra =(char)str; return letra;} else return " ";
}
string siguientePalabra(int j){
string palabra; int i = 0; j= 0; palabra = siguienteLetra(); bool continuacion;
while(palabra.at(i) == ' ') {palabra=siguienteLetra();}
if (palabra.at(i) == '\n'){ continuacion = false;} else if (palabra.at(i) == '-'){ continuacion = false;return "-";} else continuacion = true; while (continuacion){
string c= siguienteLetra();
while(c.at(0) == ' '){ j=1; c=siguienteLetra(); }
if (c.at(0) == '\n'){ continuacion = false;} else if (j==1) {cin.putback(c.at(0)); continuacion=false;} else palabra = palabra + c; }
return palabra;
}
int aparicion::leerAparicion(Libro &lib, int cap, int par) { libro = lib; capitulo = cap; parrafo = par; int j=0; palabra = siguientePalabra(j); while(palabra.at(0) == ' ') palabra = siguientePalabra(j); if (palabra.at(0) == '\n' && j==0) return 2; else if (palabra == "findecapitulo") { if (cap == libro.getNcap()) return 1; return 3; } else if (palabra.at(0) == '-') return 1; else {return 0; }
}
El problema esta, en que cuando ejecuto me da un error pero si quito el echo de que en leer(en el primero) intente almacenar las apariciones en una lista ese error no aparece, por lo que quería saber si alguno sabría a que se debe que de error al intentar almacenar las palabras.
pd: Aquí no tenéis la opción de poder poner el código dentro de un spoiler para que no quede el mensaje tan largo? |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 25/04/2014 4:31 pm | | | Título: Re: Duda de error |
| | Lionheart23 escribió: | | El problema esta, en que cuando ejecuto me da un error pero si quito el echo de que en leer(en el primero) intente almacenar las apariciones en una lista ese error no aparece, por lo que quería saber si alguno sabría a que se debe que de error al intentar almacenar las palabras. |
Para que alguien pueda ayudarte con ese problema primero debes publicar el código fuente completo, eso si no es muy largo. Si lo es debes reducirlo a un mínimo: que pueda compilarse y seguir exhibiendo el error que mencionas.
| Lionheart23 escribió: | | Aquí no tenéis la opción de poder poner el código dentro de un spoiler para que no quede el mensaje tan largo? |
No, por desgracia esa opción no existe en los foros.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |