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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  nesecito ayuda con recusividad por favor no entiendo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: nesecito ayuda con recusividad por favor no entiendo.  (Leído 3,942 veces)
ronbay

Desconectado Desconectado

Mensajes: 15


Ver Perfil
nesecito ayuda con recusividad por favor no entiendo.
« en: 23 Mayo 2021, 23:12 pm »

ESCRIBIR UN PROCESO QUE LLEVE EL MAYOR DE LOS DIGITOS AL FINAL DE UN NUMERO
HACERLO CON EL METODO RECURSIVO.
EJEMPLO 382731
SOLUCION: 327318
 :-\


En línea

Xyzed


Desconectado Desconectado

Mensajes: 307



Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #1 en: 23 Mayo 2021, 23:29 pm »

Hola.

¿En qué lenguaje lo necesitas?

No parece algo complicado.

No tengo noción de C, pero no debe ser complicado la verdad.

Yo creo que alguien con una idea en el lenguaje puede hacerlo sin problemas, pero bueno...

Te dejo una referencia de lo que deberías hacer pero en Python a ver si te sirve de algo:

Código
  1. ejemplo = "1359182"
  2. presolucion = max(ejemplo)
  3. presolucion2 = ejemplo.replace(presolucion, '')
  4. solucionfinal = presolucion2+presolucion
  5. print("Ejemplo: "+ejemplo)
  6. print("Solucion: "+solucionfinal)
  7.  
  8. #El code de arriba devuelve:
  9.  
  10. Ejemplo: 1359182
  11. Solucion: 1351829
  12.  

Te advierto de antemano, que aquí no realizan tareas y hubo revuelo sobre eso hace poco, así que te recomiendo aportar lo que intentaste.

Edito:
En cuando a la recursividad, lo mismo, no es nada complejo hacer algo así...

Saludos.


« Última modificación: 23 Mayo 2021, 23:32 pm por Xyzed » En línea

...
ronbay

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #2 en: 23 Mayo 2021, 23:38 pm »

en C++
ES PARA EL EMBARCADERO
En línea

DtxdF

Desconectado Desconectado

Mensajes: 53



Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #3 en: 23 Mayo 2021, 23:39 pm »

Hola @ronbay

Las reglas dictan que no está permitido la realización de tareas, pero estoy seguro que muchos te ayudarán si dejas un adelanto, con un esfuerzo notorio.

Lo que se me ocurre para realizar lo que quieres, es usar Módulo (en C y muchos otros lenguajes es %) primero contra el número, el resultado almacenarlo en un arreglo, luego dividirlo entre 10 y realizar esta operación sucesivamente hasta que la variable donde se haga referencia al número sea 0.

Una vez realizado todas estas operaciones, puedes hacer dos cosas, aunque eso depende de tus necesidades: puedes usar algún algoritmo de ordenamiento si deseas un orden de menor a mayor, aunque no quedará exactamente como la solución que propones; también puedes usar otra variable donde hará referencia al número mayor del arreglo que se está recorriendo, que a su vez éste debe intercambiarse con el último elemento del arreglo.

Por último, pero esto puede ser opcional si desea "reconstruir el número", es, a partir del inicio del inicio del arreglo, obtener ese elemento, multiplicarlo con 10, sumarle el segundo elemento, y así con los mismos números. Debería obtener el número "reconstruido" pero con el número mayor recorrido.

Es opcional, como le dije, ya que si no es importante, puede imprimir la lista tal cual recorriendo el arreglo y después de ello, imprimir una nueva línea.

Espero le sirva.

~ DtxdF
En línea

ronbay

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #4 en: 23 Mayo 2021, 23:50 pm »

PERDON, EN SI QUIERO QUE ME GUIEN POR QUE ME QUEDO ESTANCADO Y FRUSTRA.

EN ESTE PROCEDIMIENTO HALLO EL MAYOR PERO LO QUE ME ESTA COSTANDO ES PONER ESE DIGITO MAYOR AL FINAL DEL ARREGLO Y ES LO QUE ME COMPLICA.

ESTE ES MI CODIGO:
Código
  1. void Mayor_At_Last(Cardinal &x)
  2. {byte s;
  3. if(x<10){//Caso Base
  4. s = x;
  5.  
  6. }else{//Caso General
  7. s = x % 10;
  8. x = x / 10;
  9. Mayor_At_Last(x);//Mayor(358267)-> 8
  10.  
  11. if (s  > x){//esta en si es la que alla el mayor
  12. x = s;
  13. }
  14.  
  15. }
  16.  
  17. }
  18.  
  19.  

[MOD] No esta permitido postear todo en mayusculas, y el codigo debe estar entre etiquetas GeSHi.
« Última modificación: 23 Mayo 2021, 23:57 pm por simorg » En línea

DtxdF

Desconectado Desconectado

Mensajes: 53



Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #5 en: 24 Mayo 2021, 00:48 am »

@ronbay

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_N 9
  5.  
  6. typedef struct {
  7.    int max_number;
  8.    int index;
  9. } number;
  10.  
  11. int main(void)
  12. {
  13.    int n = 358267;
  14.    int array[MAX_N], *array_ptr = array;
  15.    int aux, tmp;
  16.    register int i = 0;
  17.  
  18.    /* Extraemos cada digito */
  19.    while (n != 0 && i < MAX_N) {
  20.        *array_ptr++ = n % 10;
  21.  
  22.        n /= 10;
  23.        i++;
  24.    }
  25.  
  26.    /* Usamos el ordenamiento burbuja */
  27.    for (int aux_i = 0; aux_i < i; aux_i++) {
  28.        for (int aux_j = 0; aux_j < i-1; aux_j++) {
  29.            if (array[aux_j] > array[aux_j+1]) {
  30.                aux = array[aux_j];
  31.                array[aux_j] = array[aux_j+1];
  32.                array[aux_j+1] = aux;
  33.            }
  34.        }
  35.    }
  36.  
  37.    number mynumber;
  38.    mynumber.index = 0;
  39.    mynumber.max_number = 0;
  40.  
  41.    /* Extraemos el número mayor */
  42.    int j;
  43.    for (j = 0; j < i; j++)
  44.        if (array[j] > mynumber.max_number) {
  45.            mynumber.max_number = array[j];
  46.            mynumber.index = j;
  47.        }
  48.  
  49.    /* Lo intercambiamos con el último y el número mayor */
  50.    tmp = array[--j];
  51.    array[j] = mynumber.max_number;
  52.    array[mynumber.index] = tmp;
  53.  
  54.    /* Reconstruimos el número */
  55.    int k, r = 0;
  56.    for (k = 0; k < i; k++) {
  57.        r *= 10;
  58.        r += array[k];
  59.    }
  60.  
  61.    printf("%d\n", r);
  62.  
  63.    return EXIT_SUCCESS;
  64. }

No es recursivo, y tampoco sé si es lo que deseas, pero te puede servir para dar un paso más.

~ DtxdF
En línea

ronbay

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #6 en: 24 Mayo 2021, 02:44 am »

gracias
En línea

prosebas

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #7 en: 24 Mayo 2021, 02:52 am »

Código
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. void recursive(int number, int *arr, int *i)
  5. {
  6.    arr[*i] = number % 10;
  7.    *i += 1;
  8.    if (number >= 10)
  9.        recursive(number / 10, arr, i);
  10.    else
  11.    {
  12.        //Ordenas el arreglo y corres las posiciones
  13.    }
  14. }
  15. int main(void)
  16. {
  17.    int num = 382731, arr[10], size = 0;
  18.    recursive(num, arr, &size);
  19.    for (int i = size - 1; i >= 0; i--)
  20.        printf("%d", arr[i]);
  21. }
  22.  

Esta es una implementación recursiva, estas obteniendo digito a digito guardandolo en arr , en el else solo debes obtener el mayor e intercambiar posiciones deberias usar un arreglo auxiliar para correr las posiciones.

Espero te sea util  :D
En línea

ronbay

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: nesecito ayuda con recusividad por favor no entiendo.
« Respuesta #8 en: 24 Mayo 2021, 03:08 am »

muchas gracias..implementare loq ue hice a tu codigo
Graccias ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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