/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Duda de error

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Lionheart23



Registrado: 25 Abr 2014
Mensajes: 1

MensajePublicado: 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: 7517
Ubicación: Mexico

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com