![]() |
Obtener un dígito en una posición
Buenas, ya voy aproximadamente un año con delphi y le entiendo perfectamente bien, pero me dejaron un problema que la verdad hasta ahora me ha dejado mal parado, no puedo hacerlo y da para pensar, me han puesto una condición (sin usar for, while, repeat y todo lo que viene a ser ciclo repetitivo), el problema es el siguiente:
Escribir el código de un programa en delphi en modo consola que pida dos números N y K donde se muestre el dígito que se encuentre en la posición K del número N ( Sin usar ciclos repetitivos ) ejemplo: N:= 1248935 K:= 4 result:= 8 El problema este me pone pensativo cuando me pidieron no usar while, ni for, ni repeat, alguien tiene alguna solución o aporte que pueda servir? Uso tanto los ciclos que no se me ocurre como hacerlo sin ellos. Por favor. Gracias de antemano :) Quizás podría solucionarse con una fórmula que se usa para contar el número de dígitos, que la verdad nunca se me habría ocurrido
|
Recuerda poner títulos descriptivos a tus preguntas, gracias.
|
Cita:
|
Pues eso es lo que tienes que hacer, usar logaritmos y exponenciales sobre base 10. Realmente no es dificil.
Otra forma un poco "chueca" que creo no es la idea, es pasar el numero a string, y de ahi hacer referencia al caracter apropiado. |
Hola andrecuellar.
¿ Ya revisaste los enlaces que hay al pié de esta página ? Saludos :) |
Cita:
|
Hola.
Fijate si te sirve de este modo:
Uso:
Saludos :) |
Dos soluciones no iterativas:
1. Variante de la de ecfisa:
2. Versión recursiva
En ambos casos, los dígitos se cuentan desde el 0 de derecha a izquierda. LineComment Saludos |
Gracias a todos!
Gracias a todos! al final terminé usando esto que igual me sirvió :D
Lo voy a poner todo en uno en consola para no estar separando todo en funciones
Muchas gracias a todos los que me ayudaron, simplemente tenía que usar la "fórmula" para obtener el número de dígitos y luego usar otra. Gracias! Tema resuelto :) |
Hola si en tu caso todo es valido excepto los ciclos repetitivos puedes probar tambien con esta alternativa
SALUDOS:D |
Cita:
Fuera de bromas, realmente no lo entiendo, en donde esta el "truco"? :confused: |
Cita:
De todas formas, ya en el mensaje #6 se había establecido que no podían usarse cadenas. LineComment Saludos |
Cita:
|
Quizá sería más claro restarle Ord('0') en lugar de $30 ;)
LineComment Saludos |
Joder no había visto el mensaje 6 lo siento, AgustinOrtu no creo que sea tan criptico el código he visto peores :eek:
Saludos... |
Pequeña variante de román cuenta los dígitos de izquierda a derecha
|
Hola.
Una observación sobre alguna de las variantes expuestas. Dado que realizan un conteo de base 0 (0, 1, 2, ...) la función debería devolver un valor distinto a 0 para señalizar un resultado inválido. Saludos :) |
La franja horaria es GMT +2. Ahora son las 04:31:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi