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


 


Tema destacado: Java [Guía] Patrones de diseño - Parte 1


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  Contar cuantas veces aparece una palabra en una frase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar cuantas veces aparece una palabra en una frase  (Leído 689 veces)
minikarpin

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Contar cuantas veces aparece una palabra en una frase
« en: 13 Marzo 2017, 10:45 »

Hola, llevo unos días buscando información y no se como resolverlo.
Tengo que buscar una palabra en una frase introducida, el problema es que no se como contar posiciones o como ir sumandolas.
-No puedo usar for (no nos deja usarlo la profesora).

Código
  1. @echo off
  2.  
  3. setlocal enabledelayedexpansion
  4.  
  5. set cont=0
  6. :frase1
  7. set frase=""
  8. set /p frase= Introduce una frase:
  9. if !frase! EQU "" (
  10. echo No dejes en blanco la frase
  11. goto frase1
  12. )
  13. :palabra1
  14. set palabra=""
  15. set /p palabra= Introduce una palabra:
  16. if !palabra! EQU "" (
  17. echo No dejes en blanco la palabra
  18. goto palabra1
  19. )
  20.  
  21. :bucle
  22.  
  23. if %palabra% EQU %frase:~1% (
  24. set /a cont=%cont%+1
  25. goto bucle
  26. )else (
  27. goto fin
  28. )
  29.  
  30.  
  31.  
  32.  
  33. :fin
  34. echo sdf %palabra% sdf %frase%
  35. echo cont !cont!

Acabo de empezar y estoy un poco perdido, gracias por la ayuda.



· Los códigos deben ir en etiquetas GeSHi (asumí que es batch...)
>aquí las reglas del foro
-Engel Lex


« Última modificación: 13 Marzo 2017, 10:46 por engel lex » En línea

yottaXT

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Contar cuantas veces aparece una palabra en una frase
« Respuesta #1 en: 15 Marzo 2017, 02:47 »

Mira soy novato en batch, pero bueno como no hay mas comentarios te dare una idea quizás sea tu solución quizás no.

Has probado con los comandos find o findstr? si entendí bien tu pregunta creo que tienen las funciones que andas buscando.


En línea

Eleкtro
Novato Astral y
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.157


El sentido común es el menos común de los sentidos


Ver Perfil
Re: Contar cuantas veces aparece una palabra en una frase
« Respuesta #2 en: 16 Marzo 2017, 04:58 »

Tengo que buscar una palabra en una frase introducida, el problema es que no se como contar posiciones

No puedo usar for (no nos deja usarlo la profesora).

Pues entonces no es un ejercicio práctico. Sinceramente esa profesora no debería estar enseñando algoritmos recursivos ni otras metodologías que sean rebuscadas para conseguir hacer lo que hace un FOR de la única forma eficiente en Batch, por que eso son malos hábitos de programación y tiene sus consecuencias.

El modo eficiente de determinar la posición de un caracter en una cadena de texto es usando un FOR para poder iterar los caracteres y así ir sumando sus índices. La otra metodología sería usando etiquetas (Call, GoTo. Labels), saltanto de una parte del código a otro y esto en según que circunstancias (demasiado recursividad saltos/llamadas consecutivas) inevitablemente desbordará la cola de la pila de llamadas generando un error de desbordamiento de la pila de llamadas, valga la redundancia.

De verdad te lo digo, es un peligro acostumbrarse a hacer estas malas prácticas y tomarlo como costumbres, por que esto solo servirá para conseguir ser un mal programador que tienda a crear código spaguetti, mal estructurado y con alto riesgo de errores. Pero en fin, si te han pedido hacerlo de la manera menos práctica en la programación entonces aquí te enseño el modo:

Código
  1. @echo OFF
  2.  
  3. Set "str=Hello World!"
  4. Set "find=world"
  5.  
  6. Call :FindStrPos "%str%" "%find%" Y :: Result: 7
  7. Echo:%Pos%
  8.  
  9. Call :FindStrPos "%str%" "hello" N :: Result: 0 (nul, because "N" of sensitive case search)
  10. Echo:%Pos%
  11.  
  12.  
  13.  
  14.  
  15. :FindStrPos :: %1=InputString, %2=FindString, %3=IgnoreCase(Y/N)
  16. If Not Defined funcPos   (Set /A "funcPos=0")
  17. If Not Defined funcInput (Set "funcInput=%~1")
  18. If Not Defined funcFind  (Set "funcFind=%~2")
  19. If /I "%~3" EQU "Y" If Not Defined ignoreCase (Set "ignoreCase=/I")
  20. Set /A "funcPos+=1"
  21. (
  22. Echo:%funcInput%|FindStr %ignoreCase% /B /C:"%funcFind%"
  23. )1>NUL || (
  24. Set "funcInput=%funcInput:~1%"
  25. If Defined funcInput (GoTo :FindStrPos)
  26.        Set /A "funcPos=0"
  27. )
  28. Set "Pos=%funcPos%"
  29. Set /A "funcPos=0"
  30. Set "funcInput="
  31. Set "funcFind="
  32. Set "ignoreCase="
  33. Exit /B 0

¡Saludos!
« Última modificación: 16 Marzo 2017, 05:06 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
contar caracteres de una palabra y devolver que palabra es en java
Java
Cooltan 4 18,820 Último mensaje 6 Abril 2011, 12:21
por Cooltan
Contar cuantas veces se repite un numero [duda JAVA]
Java
Norlak 3 21,486 Último mensaje 23 Agosto 2012, 18:33
por s00rk
Batch. Encontrar palabra en frase
Scripting
Stealt 4 2,068 Último mensaje 30 Agosto 2013, 07:29
por Eleкtro
C sharp - Como Contar la Repeticion de una palabra en una frase.
.NET
a.p007 6 382 Último mensaje 25 Marzo 2017, 10:13
por Eleкtro
JAVA- Como Contar la Repeticion de una palabra en una frase.
Java
a.p007 2 317 Último mensaje 17 Abril 2017, 03:49
por cunian
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines