![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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
|
#2
|
||||
|
||||
Recuerda poner títulos descriptivos a tus preguntas, gracias.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Editado, gracias
![]() |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
Hola andrecuellar.
¿ Ya revisaste los enlaces que hay al pié de esta página ? Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
|||
|
|||
Cita:
![]() |
#7
|
||||
|
||||
Hola.
Fijate si te sirve de este modo:
Uso:
Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
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 Última edición por roman fecha: 02-09-2016 a las 17:51:40. Razón: Me equivoqué de autor de la otra versión. |
#9
|
|||
|
|||
Gracias a todos!
Gracias a todos! al final terminé usando esto que igual me sirvió
![]() 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 ![]() |
#10
|
||||
|
||||
Hola si en tu caso todo es valido excepto los ciclos repetitivos puedes probar tambien con esta alternativa
SALUDOS ![]() Última edición por BDWONG fecha: 07-09-2016 a las 05:03:18. |
#11
|
||||
|
||||
Cita:
![]() ![]() Fuera de bromas, realmente no lo entiendo, en donde esta el "truco"? ![]() |
#12
|
||||
|
||||
Convierte el número en una cadena, toma el k-ésimo caracter y lo devuelve restándole $30 que es el código ascii del 0, es decir, conviertiendo el caracter de vuelta en número.
De todas formas, ya en el mensaje #6 se había establecido que no podían usarse cadenas. LineComment Saludos |
#13
|
||||
|
||||
Cita:
![]() |
#14
|
||||
|
||||
Quizá sería más claro restarle Ord('0') en lugar de $30
![]() LineComment Saludos |
#15
|
||||
|
||||
Joder no había visto el mensaje 6 lo siento, AgustinOrtu no creo que sea tan criptico el código he visto peores
![]() Saludos... |
#16
|
||||
|
||||
Pequeña variante de román cuenta los dígitos de izquierda a derecha
Última edición por BDWONG fecha: 07-09-2016 a las 20:00:13. |
#17
|
||||
|
||||
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 ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Obtener determinado dígito de un número | xneox | Varios | 10 | 07-10-2012 01:43:22 |
Pago Fácil, obtener dígito verificador | DamianG | Varios | 3 | 25-09-2012 20:30:45 |
Eliminar un digito y mostrar el digito eliminado | luisito2011 | Varios | 17 | 01-04-2011 05:27:17 |
Obtener la posición del cursor en un memo | serg | Varios | 1 | 03-03-2008 00:21:47 |
Comparar un number dígito a dígito | kuan-yiu | SQL | 2 | 25-06-2007 17:26:47 |
![]() |
|