pero la manera en que lo hago no sale
si pongo vacio me salta uno
si pongo 4 palabras me salta 3
y me estoy mareando bastante
les dejo el codgio por si quieren verlo
Código C:
Ver original
| |||
contar palabras de una cadena necesito contar palabras que hay en una cadena de caracteres pero la manera en que lo hago no sale si pongo vacio me salta uno si pongo 4 palabras me salta 3 y me estoy mareando bastante les dejo el codgio por si quieren verlo
Código C:
Ver original |
| ||||
Respuesta: contar palabras de una cadena As veces no hay que reinventar la rueda :D Mira este código a ver mas o menos que haces mal o lo que puedes mejorar :D
Código C++:
Ver original Sacado de http://answers.yahoo.com/question/in...2193523AAcrImE Código echo por ale.NET |
| ||||
Respuesta: contar palabras de una cadena Cita:
Iniciado por eke_ps necesito contar palabras que hay en una cadena de caracteres pero la manera en que lo hago no sale si pongo vacio me salta uno si pongo 4 palabras me salta 3 y me estoy mareando bastante les dejo el codgio por si quieren verlo
Código C:
Ver original Mira lo que veo es que hay que hacer es inicializar el contador en 1 ya que la función es contar los espacios para las palabras, entonces cuando introducimos la palabra lógicamente no hay espacio en el 1er elemento a menos que si le agreguemos espacio. PD: para que esta int bolle =0;? |
| |||
Respuesta: contar palabras de una cadena Aun cuando las propuestas anteriores son perfectas te comento que tambien puedes tokenizar por espacios:
Código C:
Ver original Esto te permite de una forma simple añadir modificaciones; supongamos que quieres contar palabras en idiomas que aceptan el apostrofe sin mediar espacios: "They're some things", en este caso el contador de palabras por espacios te dirá que hay 3 palabras cuando en verdad hay 4, lo solucionas añadiendo el caracter apostrofe al token char tok[] = " '" O en idiomas donde los pronombres se apostillan al final separados por un guion: "Pots deixar-me tal cosa", en este caso amplias los tokens con el guion char tok[] = " '-" Recuerda que todo esto no sirve en el mundo real donde puedes encontrar frases mal espaciadas, tendrias que guardar una copia de la palabra anterior para ver que realmente es una palabra, etc... Tal vez te interesará mirar algo de expresiones regulares, pero ya te comento ahora que eso de las regex pueden complicarse hasta lo impensable. Saludos vosk |
| ||||
Respuesta: contar palabras de una cadena El código tuyo falla porque estás contando los espacios, cuando escribes: Hola, qué tal tiene solo dos espacios, por lo tanto, para el programa solo tienes dos palabras. Si colocas una palabra, te dirá que hay cero palabras porque no tiene ningún espacio. Así que porto una solución.
Código C:
Ver original Aunque puede ser optimizado este código, solo te doy un ejemplo, además, como te dijo vosk en un escenario real puedes encontrarte con cadenas mal espaciadas; Como por ejemplo: Hola[espacio][espacio][espacio]como[espacio][espacio][espacio]estas, esto dirá que hay 6 palabras. Aunque se podría dejar atrás esa lógica de contar las palabras por los espacios en la cadena y aplicar otra solución así:
Código C:
Ver original Un saludo. |
| ||||
Respuesta: contar palabras de una cadena Soy yo que le tengo que hacer los deberes??? No lo sabia XDD Lo que el quiere es que le esclarescan su problema, yo a mi me da igual. Si su programa no anda y lo ha intentado al menos, pegar un trozo de código aqui para que le de una idea no creo que sea malo. Ademas no se ha quejado o sea que le servio para algo :D Ahora si el ha echo un copy/paste es su problema no mio. A la hora de buscar un trabajo a ver como saca la chuleta XDD |
| |||
Respuesta: contar palabras de una cadena @guzzano: mejor tu segunda funcion que la primera, en la primera si entras 'hola' te cuenta 0 palabras. Mas abajo cualgo una implemetacion de tu idea. @vangodp: lo mismo, si entras un texto vacío te cuenta 1 palabra, es decir que cumple la faena pq cuenta palabras pero la cumple mal. Imagina un empleado de un banco que su trabajo consiste en contar billetes: el trabajo de contar billetes lo hace, hasta aqui todo bien, pero si los cuenta mal la cosa ya no vale. La version de guzzano de determinar las palabras en funcion de los espacios parece una buena opcion, voy a implementar algo mas de codigo siguiendo la misma idea de contar por separadores pero con mas separadores (ya que lo hacemos que sea a lo grande):
Código C:
Ver original La funcion chrmatch no existe, solo es un buscador de caracteres dentro de una lista, me sirve para determinar si un caracter está en la lista de caracteres que considero separadores:
Código C:
Ver original Los falsos positivos son un separador seguido de otro separador (es decir un separador que separa otro separador), que con la busqueda directa me contaria como palabra. Si quiero usar mas separadores solo tengo que añadirlos como caracter a la lista de tokens. De igual forma puedo ampliar la funcionalidad añadiendo una lista de palabras excluidas. La parte que muestra los caracteres es solo para ver que está haciendo, el comparador que determina si es algo significativo es el de la distancia entre offsets. @vangodp: ya se que estoy haciendo los deberes de otro, pero a veces practicando tambien se aprende. Tu has copiado y pegado un codigo de otro sitio que como te comenté mas arriba en determinados casos da un resultado erroneo, pero no te hubiese costado nada hacer un par de pruebas para ver como responde. No te lo tomes mal, es solo mi opinion ;) Saludos vosk Última edición por vosk; 30/11/2013 a las 05:03 |
Etiquetas: |