Foros del Web » Programación para mayores de 30 ;) » Programación General »

como hacer....

Estas en el tema de como hacer.... en el foro de Programación General en Foros del Web. Cita: Iniciado por DarkJ MaxExtreme, si dices que strstr() busca "subcadenas dentro de cadenas", entonces no sirve, ya que lo que quiere es contar "palabras ...

  #31 (permalink)  
Antiguo 19/04/2005, 06:09
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por DarkJ
MaxExtreme, si dices que strstr() busca "subcadenas dentro de cadenas", entonces no sirve, ya que lo que quiere es contar "palabras dentro de frases". La subcadena "loco" esta en la cadena "Yo coloco eso", pero la palabra "loco" no esta en la frase "Yo coloco eso". A tu solucion habria que añadir la comprobacion de que los caracteres anterior y posterior a lo detectado por strstr() son caracteres que no se pueden encontrar en una palabra: espacios y caracteres especiales. O simplificando caracteres no alfanumericos.

Por eso es bueno realizar prepara los casos de prueba antes de escribir el codigo, mientras algun test falle el codigo no es correcto.
Mi código era perfecto para lo dicho: Contar apariciones de sucesiones de caractéres ASCII. Estaba respondiendo al tema de la función strstr(). Y qué te crees, que es muy difícil hacer lo que dices?... Simplemente haces +3 en malloc para guardar los espacios y luego les añades en la primera y última posición: p1[0]=' '; p1[tamaño]=' '; ¡¡Qué nivel eh!! ¿Es fácil modificarla, o tengo que hacer el código exacto?
  #32 (permalink)  
Antiguo 19/04/2005, 06:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Cita:
Iniciado por MaxExtreme
Mi código era perfecto para lo dicho: Contar apariciones de sucesiones de caractéres ASCII. Estaba respondiendo al tema de la función strstr(). Y qué te crees, que es muy difícil hacer lo que dices?... Simplemente haces +3 en malloc para guardar los espacios y luego les añades en la primera y última posición: p1[0]=' '; p1[tamaño]=' '; ¡¡Qué nivel eh!! ¿Es fácil modificarla, o tengo que hacer el código exacto?
¿Hola? ¡Hola! ,hola. <hola> "hola" -hola , por poner unos ejemplos donde no solo son espacios. Y en el mensaje donde pones el codigo citas un mensaje donde dice que lo que quiere es contar apariciones de palabras, que es lo que has dicho que no hace strstr().

De todas formas, tampoco es necesario poner el codigo exacto, lo importante es poner las ideas. Diciendo que mire strstr(), y que debe mirar que no forme parte de otra palabra, yo creo que hubiese bastado. Luego que el se pelee con la implementacion. Porque 10 programadores te van a dar 20 implementaciones "perfectas" de la misma idea (seguro que se puede hacer con una maquina de estados recorriendo caracter a caracter la cadena).
  #33 (permalink)  
Antiguo 19/04/2005, 06:48
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por DarkJ
¿Hola? ¡Hola! ,hola. <hola> "hola" -hola , por poner unos ejemplos donde no solo son espacios. Y en el mensaje donde pones el codigo citas un mensaje donde dice que lo que quiere es contar apariciones de palabras, que es lo que has dicho que no hace strstr().

De todas formas, tampoco es necesario poner el codigo exacto, lo importante es poner las ideas. Diciendo que mire strstr(), y que debe mirar que no forme parte de otra palabra, yo creo que hubiese bastado. Luego que el se pelee con la implementacion. Porque 10 programadores te van a dar 20 implementaciones "perfectas" de la misma idea (seguro que se puede hacer con una maquina de estados recorriendo caracter a caracter la cadena).
Pues sencillamente no. Cierto, creí que sólo te referistes a espacios. Para caracteres especiales, una macro o isalpha(). Y no, no hay muchas implementaciones perfectas en éstas cosas: Hay 1. Precisamente, esa "una" es la que se intenta lograr en las librerías estándar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:59.