Título: problema con busqueda de silabas ( letra mayuscula) Publicado por: manutmac en 7 Noviembre 2012, 18:59 pm Tengo el codigo de ahi abajo, mi problema es que al ser nombres propios la primera letra va con mayuscula y cuando hago la busqueda por ejemplo con mu no me aparece Muhittin( uno de los nombres ) que es lo que deberia pasar.
Gracias #include <stdio.h> #include <string.h> int main() { const char *const pnames[200] = aqui aparecen 200 nombres propios; int i; for (i = 0; i < 200; i++) { char primera_letra = pnames
char ultima_letra = pnames[ longitud_nombre -1 ]; printf("Elemento %i: %s, Primera letra: %c, ultima %c\n", i+1, pnames, primera_letra, ultima_letra ); } char cadena_busqueda[4]; printf("Introduzca cadena para buscar: "); scanf("%3s", cadena_busqueda); for (i = 0; i < 200; i++) { char* v; v = strstr(pnames, cadena_busqueda); if (v != NULL) printf("Silaba %s encontrada en %s\n", cadena_busqueda, pnames); } return 0; } Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: Ferno en 7 Noviembre 2012, 22:38 pm Bueno, hay funciones como "toupper(int)" que convierten las letras minúsculas en mayúsculas (y, BTW, tolower(int), convierte mayúsculas a minúsculas).
Fijate cómo utilizarlas para fácilmente modificar tu código! Saludos :D Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: BatchianoISpyxolo en 7 Noviembre 2012, 22:40 pm No he mirado el código ni nada. Pero por lo que dices, seguro que hay alguna función en string.h que sirva para pasar una cadena de caracteres a minúsculas: estilo lowercase o a mayúsculas como uppercase.
Existe la función: Código
Que es insensible a may y minus. Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: do-while en 8 Noviembre 2012, 15:30 pm No he mirado el código ni nada. Pero por lo que dices, seguro que hay alguna función en string.h que sirva para pasar una cadena de caracteres a minúsculas: estilo lowercase o a mayúsculas como uppercase. Existe la función: Código
Que es insensible a may y minus. No, en la libreria estandar de C no tienes funciones que manejen cadenas ignorando el caso, y stricmp no forma parte ni de string.h (http://cplusplus.com/reference/clibrary/cstring/) ni del resto de la libreria estandar de C (http://cplusplus.com/reference/clibrary/). Como bien ha dicho Ferno, tienes que utilizar toupper y tolower para hacer comparaciones cambiando el caracter a mayusculas o minusculas, o directamente modificar las cadenas con estas funciones para cambiar el caso de los caracteres que las forman. ¡Saludos! Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: rir3760 en 8 Noviembre 2012, 15:48 pm Otra opción es crear una función propia que compare las cadenas sin distinguir mayúsculas de minúsculas. Por ejemplo:
Código
Un saludo Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: BatchianoISpyxolo en 8 Noviembre 2012, 16:31 pm The stricmp function is available for C++ programs. It is available for C only when the program defines the __cplusplus__strings__ macro.
:\ Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: rir3760 en 8 Noviembre 2012, 16:46 pm Si ese texto lo copiaste de esta pagina (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst264.htm), cito:
Citar stricmp() - Compare Strings without Case Sensitivity En ella se indica claramente que esa función es una extension y estas no forman parte de las bibliotecas estándar de C y C++ (su disponibilidad depende del compilador).Format #include <string.h> int stricmp(const char *string1, const char *string2); Note: The stricmp function is available for C++ programs. It is available for C only when the program defines the __cplusplus__strings__ macro. Language Level: Extension Un saludo Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: BatchianoISpyxolo en 8 Noviembre 2012, 16:50 pm @rir3760, ya, ya xD
Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: manutmac en 13 Noviembre 2012, 15:24 pm muchas gracias a todos di con la solucion con vuestros consejos!
Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: Jomad205 en 14 Noviembre 2012, 11:18 am Buenas, de antemano pedire disculpas ya que aun soy un novicio en esto del C y tengo la sensación de que lo que te voy a decir no te servirá para nada.
Leí que en ascii al tener cada caracter una numeracion independiente, la manera de pasar de minusculas a mayusculas era restandole 32 , y viceversa. Por ejemplo: Código
/* Eso debería cambiarte los caracteres que introduzcas y sean minúsculas , exclusivamente las minúsculas, a letras mayúsculas */ Bueno , si no te sirve de nada lo lamento ya que aun no estoy al nivel de la mayoría de lo que por aquí se habla. ¡Un saludo! Título: Re: problema con busqueda de silabas ( letra mayuscula) Publicado por: rir3760 en 14 Noviembre 2012, 16:09 pm Leí que en ascii al tener cada caracter una numeracion independiente, la manera de pasar de minusculas a mayusculas era restandole 32 , y viceversa. No se recomienda ya que el lenguaje C no garantiza el juego de caracteres ASCII (solo un subconjunto de el) como tampoco que la diferencia entre las mayúsculas y minúsculas sea de 32. Es el caso usual si pero no esta garantizado.En su lugar es mejor utilizar isalpha y tolower/toupper (prototipos en <ctype.h>) para conocer si un carácter es alfabético y de ser el caso pasarlo a minúsculas/mayúsculas. Un saludo |