VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Hola. Estoy siguiendo un curso de c++, y un ejercicios es sobre palindromos. La cuestión es que presenta un palindromo que está separado por espacios. El punto es que en modo consola no se como hacer para que mi std::cin, lea los espacios, y en mi array tipo char, se almacene una palabra tipo "HOLA QUE TAL".
|
|
|
|
« Última modificación: 03 Julio 2009, 20:05 por Ginçs »
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|
Eternal Idol
|
Esas son 3 palabras las podes leer de varias maneras, esta es una: char linea[80]; cin.get(linea, sizeof(linea));
|
|
|
|
|
En línea
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Muchas gracias por tu pronta respuesta Eternal Idol. Ahora lo pruebo y veo como me va el código.
Una cosa.. Si tengo alguna otra duda del programa en si, ¿creo otro thread o sigo en este?
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|
Eternal Idol
|
De nada. Si queres podes cambiarle (o lo cambio yo) el titulo al hilo y seguir en este, como te parezca mejor.
|
|
|
|
|
En línea
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Me surgió una duda para mejorar el algoritmo. Hay alguna manera de determinar el tamaño del array cuando se lee un dato?. Digamos, como una redimensión...
Por ejemplo: "HOLA"
Mi vector es char vector[100]; Que tan solo quede char vector[5];
Creo que no es conveniente, de ahí lo que me surgió como idea, fue contar cuantas letras tiene digamos que se incremente un contador mientras el elemento del vector sea distinto de "".
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|
Eternal Idol
|
Para esta clase de datos tan chicos es una perdida de tiempo pero podes hacerlo asi por ejemplo: char *linea_temp = new char[80]; cin.get(linea_temp, 80); char *linea = new char [strlen(linea) + 1]; // +1, cero terminador de cadena strcpy(linea, linea_temp); delete linea_temp; O mejor asi: string str; getline(cin, str);
|
|
|
|
« Última modificación: 03 Julio 2009, 20:48 por Eternal Idol »
|
En línea
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Hola... Mira aqui hay un error en la parte de comparación de caracteres y no encuentro la falla  #include <iostream> using namespace std; int main() { int n; char _vec[100]; cout << "Ingrese cadena" << endl; cin.get(_vec,sizeof(_vec)); n=strlen(_vec)+1; int i=0; bool e=0; while(e==0 && i<n/2) { if(_vec[i]!=_vec[n-i+1]){e=1;}//Aqui seguramente está algo mal else{i++;} } if(e==0){cout<<"palindromo"<<endl;} else{cout<<"No es palindromo"<<endl;} system("pause"); return 0; }
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Aqui la corrección, me costo bastante interpretar como se tratan las cadenas en c. if(_vec[i]!=_vec[n-i-2]){e=1;}Ahora el problema es que me debe reconocer palindromos con palabras separadas. En el curso de c.conclase.net aparece "anita lava la tina". ¿Debería eliminar los espacios unicamente verdad? ¿Existe alguna función para hacerlo? EDITADO: En caso de que haya que detectar espacios: Probé con: _vec[]=NULL _vec[]='\0' pero no resulta.
|
|
|
|
« Última modificación: 03 Julio 2009, 21:50 por Ginçs »
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Claro. Esa es mi idea. Pero lo que quiero lograr es lo siguiente:
ANITA LAVA LA TINA ANITALAVALATINA
Entiendes? Digamos que necesito comprobar todos los caracteres de corrido.
Gracias por tu respuesta x0ʎu
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Mmm... Eso me da la impresión de que existe alguna función que lo permita. Por que la verdad no se como detectar esos espacios en blanco en mi vector.
Gracias.
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
ny0x
Desconectado
Mensajes: 334
|
comparar cada caracter con ' '  o con el valor 32
|
|
|
|
|
En línea
|
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Gracias x0ʎu . Ahora compila. Estaba utilizando codeblocks y cuando utilizaba vector[]=' ' no me compilaba, en realidad tenia que poner un espacio ' _' en medio de los apostrofes. Ahora me falta hacer un corrimiento de las palabras. Ya estaré comentando como me va.  S2!
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
VonN
Desconectado
Mensajes: 151
Learnin' Python&C++
|
Mira x0ʎu, ya funciona. Muchas gracias a ti y a EI. Ahora unicamente me falta implementar la funcion bool palindromo, ya tendre concluido mi ejercicio. Gracias  #include <iostream> using namespace std; int main() { int n; char _vec[100]; cout << "Ingrese cadena" << endl; cin.get(_vec,sizeof(_vec)); n=strlen(_vec)+1; int isp=1; while(isp<n) { if(_vec[isp]==32) { for(int i=isp;i<n;i++) { _vec[i]=_vec[i+1]; } n--; } isp++; } int i=0; bool e=0; while(e==0 && i<n/2) { if(_vec[i]!=_vec[n-i-2]){e=1;} else{i++;} } if(e==0){cout<<"palindromo"<<endl;} else{cout<<"No es palindromo"<<endl;} system("pause"); return 0; }
|
|
|
|
|
En línea
|
  Se toma por necios a aquellos que dicen lo que todos pesamos
|
|
|
|