elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con busqueda de silabas ( letra mayuscula)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: problema con busqueda de silabas ( letra mayuscula)  (Leído 5,633 veces)
manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
problema con busqueda de silabas ( letra mayuscula)
« 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
  • ;
int longitud_nombre = strlen( 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;

}


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #1 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


En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #2 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
  1. short stricmp (const unsigned char *s1, const unsigned char *s1);

Que es insensible a may y minus.
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #3 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
  1. short stricmp (const unsigned char *s1, const unsigned char *s1);

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 ni del resto de la libreria estandar de C.

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!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #4 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
  1. #include <ctype.h>
  2.  
  3. int stricmp(char const *s, char const *t)
  4. {
  5.   while (tolower(*s) == tolower(*t) && *s != '\0'){
  6.      s++;
  7.      t++;
  8.   }
  9.  
  10.   return (tolower(*s) > tolower(*t)) - (tolower(*s) < tolower(*t));
  11. }

Un saludo
En línea

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
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #5 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.

:\
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #6 en: 8 Noviembre 2012, 16:46 pm »

Si ese texto lo copiaste de esta pagina, cito:
Citar
stricmp() - Compare Strings without Case Sensitivity

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

Un saludo
En línea

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
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #7 en: 8 Noviembre 2012, 16:50 pm »

@rir3760, ya, ya xD
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #8 en: 13 Noviembre 2012, 15:24 pm »

muchas gracias a todos di con la solucion con vuestros consejos!
En línea

Jomad205

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: problema con busqueda de silabas ( letra mayuscula)
« Respuesta #9 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
  1. main()
  2. {
  3. int c;
  4. while((c=getchar()) !=EOF)
  5. {
  6. if(c>='a' && c<='z') c-=32;
  7. putchar(c);
  8. }
  9. }

/* 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!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines