![]() |
![]() |
| Paypal | 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:
es como si estuviese cifrado.. es peor que leer C ![]() 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 | |
|
|
Temas Similares
|
||||
| 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 |
|