elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
18 Marzo 2010, 17:33  


Temas destacados: Últimos eventos sobre seguridad/inseguridad


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: Eternal Idol)
| | |-+  Ejercicio Palindromo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: Ejercicio Palindromo  (Leído 1130 veces)
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Ejercicio Palindromo
« en: 03 Julio 2009, 19:02 »

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
Moderador
*****
Desconectado Desconectado

Mensajes: 3.391


Assembly (x86/x64), C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Leer texto con espacios?
« Respuesta #1 en: 03 Julio 2009, 19:18 »

Esas son 3 palabras las podes leer de varias maneras, esta es una:

Código
char linea[80];
cin.get(linea, sizeof(linea));
En línea

http://www.nacionalypopular.com/
http://www.lucheyvuelve.com.ar/



No existe la libertad de prensa, tan sólo es una máscara de la libertad de empresa.
Arturo Jauretche
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Leer texto con espacios?
« Respuesta #2 en: 03 Julio 2009, 19:21 »

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
Moderador
*****
Desconectado Desconectado

Mensajes: 3.391


Assembly (x86/x64), C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Leer texto con espacios?
« Respuesta #3 en: 03 Julio 2009, 19:31 »

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

http://www.nacionalypopular.com/
http://www.lucheyvuelve.com.ar/



No existe la libertad de prensa, tan sólo es una máscara de la libertad de empresa.
Arturo Jauretche
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #4 en: 03 Julio 2009, 20:07 »

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
Moderador
*****
Desconectado Desconectado

Mensajes: 3.391


Assembly (x86/x64), C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Ejercicio Palindromo
« Respuesta #5 en: 03 Julio 2009, 20:44 »

Para esta clase de datos tan chicos es una perdida de tiempo pero podes hacerlo asi por ejemplo:

Código
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:

Código
string str;
getline(cin, str);
« Última modificación: 03 Julio 2009, 20:48 por Eternal Idol » En línea

http://www.nacionalypopular.com/
http://www.lucheyvuelve.com.ar/



No existe la libertad de prensa, tan sólo es una máscara de la libertad de empresa.
Arturo Jauretche
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #6 en: 03 Julio 2009, 21:16 »

Hola... Mira aqui hay un error en la parte de comparación de caracteres y no encuentro la falla  :-\
Código
#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 Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #7 en: 03 Julio 2009, 21:38 »

Aqui la corrección, me costo bastante interpretar como se tratan las cadenas en c.
Código
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
ny0x

Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #8 en: 03 Julio 2009, 22:59 »

y si ignoras los espacios en lugar de eliminarlos, digo si el caracter es un espacio pasas a comparar el siguiente caracter o algo parecido  :silbar:
En línea
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #9 en: 03 Julio 2009, 23:01 »

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
ny0x

Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #10 en: 03 Julio 2009, 23:19 »

para eliminar los espacios podrias copiar la cadena en otra variable pero ignorando los espacios  :xD
En línea
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #11 en: 03 Julio 2009, 23:21 »

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 Desconectado

Mensajes: 334



Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #12 en: 03 Julio 2009, 23:26 »

comparar cada caracter con ' '  :laugh: o con el valor 32
En línea
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #13 en: 03 Julio 2009, 23:31 »

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. :xD

S2!
En línea




Se toma por necios a aquellos que dicen lo que todos pesamos
VonN

Desconectado Desconectado

Mensajes: 151


Learnin' Python&C++


Ver Perfil
Re: Ejercicio Palindromo
« Respuesta #14 en: 03 Julio 2009, 23:48 »

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  ;-)

Código
#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
Páginas: [1] 2 Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Yashira.org    Videojuegos    indetectables.net    Seguridad Informatica Colombia    Indejuegos    Internet móvil

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec    Seguridad Wireless    Underground México    Biblioteca de Seguridad

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC