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


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Obtener sub-secuencias continuas de un numero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener sub-secuencias continuas de un numero  (Leído 248 veces)
Clara007

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Obtener sub-secuencias continuas de un numero
« en: 23 Abril 2020, 22:43 »

Hola, necesito un código que dado un determinado numero genere todas las posibles sub-secuencias continuas en orden
Por ejemplo:
Numero: 49142
Sub-secuencias validas: "491", "914", "142", "4914", "9142"
Ya de 6 dígitos no seria posible generar ninguna y esto se tiene que validar

Agradezco cualquier idea que me puedan dar

Gracias!


En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: Obtener sub-secuencias continuas de un numero
« Respuesta #1 en: 23 Abril 2020, 22:53 »

que llevas hecho y donde tienes dudas?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Clara007

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Obtener sub-secuencias continuas de un numero
« Respuesta #2 en: 23 Abril 2020, 23:12 »

Recién empiezo en esto de la programación, asi que ideas tengo pocas, luego de generar las combinaciones de dos lugares es decir 49, 91, 14, 42 no se como generar el resto
 
En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: Obtener sub-secuencias continuas de un numero
« Respuesta #3 en: 23 Abril 2020, 23:24 »

si publicas por lo menos lo que llevas así sea lo minimo se puede en general ver como estas encaminada y las librerias que usas... pero bueno vamos a eso...

tienes que usar 2 ciclos

el primero para la cantidad de caracteres y el segundo para la posición tal que


Código:
entero largo;
entero inicio;
para(largo = 2; largo < texto.length(); largo++){
  para (inicio = 0; inicio < texto.length()-largo; inicio++){
    ...
    ... texto.substring(inicio, inicio+largo);
    ...
  }
}


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
K-YreX


Desconectado Desconectado

Mensajes: 743



Ver Perfil
Re: Obtener sub-secuencias continuas de un numero
« Respuesta #4 en: 23 Abril 2020, 23:43 »

No te daré el código pero te daré una idea...
Supón que tienes un número de 5 cifras como el de tu supuesto (49142). Puedes hacer las siguientes subsecuencias:
Código:
Longitud 1: 4 - 9 - 1 - 4 - 2
Longitud 2: 49 - 91 - 14 - 42
Longitud 3: 491 - 914 - 142
Longitud 4: 4914 - 9142
Longitud 5: 49142 (Esta última puede obviarse como subsecuencia... Dependerá de tu lógica del problema, es decir, que tú sabrás si considerarla o no)

Lo que hay que conseguir es un patrón y de aquí podemos obtener el siguiente:
Se empiezan generando n subsecuencias de longitud 1 siendo n el número de cifras del número en cuestión. A partir de ahí si se incrementa la longitud de la subsecuencia en x, se decrementará el número de subsecuencias en x también. Dicho de otra forma:
Código:
Longitud: 1 -> Subsecuencias: n
Longitud: 2 -> Subsecuencias: n-1
...

Tienes que hacer una estructura repetitiva, un bucle. Sabes cuántas veces se repetirá dicho bucle? Sí, n veces si se considerá la subsecuencia de longitud n o n-1 si se considerán las subsecuencias hasta longitud = n-1. Entonces el bucle más adecuado es un for(). Voy a suponer que el número completo también forma una subsecuencia para no tener que explicar ambas posibilidades. Tú puedes modificarlo para que no sea así.
El bucle puedes hacer que empiece con i = 1 y vaya hasta i = n y en cada iteración mostrarás las subsecuencias de longitud i. Para cada iteración de i, cuántas subsecuencias hay? Suponiendo que i empieza en 1, n - i + 1:
Código:
PARA EL SUPUESTO n = 5
Iteracion i = 1 -> Longitud: 1 -> Subsecuencias: 5-1+1 = 5
Iteracion i = 2 -> Longitud: 2 -> Subsecuencias: 5-2+1 = 4
...
Entonces tendrás que hacer un bucle for() dentro del primer bucle for(). Este haremos que empiece en j = 0 hasta s (subsecuencias) = n-i+1. Y en cada iteración de este bucle interno tienes que mostrar el número empezando en la cifra j y con una longitud de i. (Suponiendo que 0 es la primera cifra del número y n-1 la última).

Lo que te queda es ver cómo muestras la parte del número que te interesa. La mejor opción es guardar el número en un array (vector) dejando cada cifra del número en una posición del array.
Otra opción es usar las matemáticas:
Código:
SI n ES UN NUMERO ENTERO:
n % 10 -> Devuelve la última cifra
n % 100 -> Devuelve las dos últimas cifras
...
n / 10 -> Devuelve el número sin la última cifra
n / 100 -> Devuelve el número sin las dos últimas cifras
...

El resto tiene que salir de ti. Si tienes alguna duda concreta siempre puedes preguntar pero tienes que esforzarte para entender todo lo expuesto anteriormente así que antes de preguntar puedes coger un papel y boli y ver cómo se repiten los patrones que te he dicho. No esperes que te demos la solución sin esfuerzo porque eso no va a pasar. Suerte.
« Última modificación: 23 Abril 2020, 23:45 por YreX-DwX » En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener numero de serie del fabricante (usb)
Programación Visual Basic
Vampersy 1 13,085 Último mensaje 21 Enero 2009, 13:00
por Fabricio
obtener numero cpus(cores)
Programación C/C++
kmilinh0 2 837 Último mensaje 23 Enero 2013, 21:43
por kmilinh0
Obtener mayor número de una serie C++
Programación C/C++
Ingrid1997 1 672 Último mensaje 19 Octubre 2015, 05:52
por Seyro97
¿Cómo obtener el número de MAC? « 1 2 »
Redes
omikron87 17 8,020 Último mensaje 1 Junio 2017, 06:19
por chakan
obtener el número máximo y el número mínimo de matriz aleatoria c++
Programación C/C++
ra58alfa 2 582 Último mensaje 4 Julio 2018, 23:31
por Beginner Web
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines