Autor Tema: Función recursiva en Pascal

0 Usuarios y 1 Visitante están viendo este tema.

15 Diciembre, 2010, 09:34 pm
Leído 1806 veces

super_eman

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 372
  • Karma: +0/-0
  • Sexo: Masculino
  • Solo se que no se nada
    • Matemática una pasión
Hola estimados foristas!!!
Tengo el siguiente enunciado: Escriba una función recursiva en lenguaje Pascal que cuente la cantidad
de apariciones de un dígito d en un número entero n: por ejemplo si, n=13234, y d=3; el resultado de la
función es 2.

Respuesta:
Lo que tenia pensado es ir poniendo cada dígito en un array pero no se me ocurre como.

Se escuchan sugerencias!!!
Muchas Gracias.

16 Diciembre, 2010, 01:39 am
Respuesta #1

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
o puedes ir dividiendo entre 10...comparas el modulo a 10 y despues divides.

divides hasta que n valga 0..

algo asi
c = 0 entero
mientras n>0{
Si n%10 == d entonces
c++;
n=n/10;
}

y c sera el numero de veces que d esta en n.

------

para hacerlo recursivo, que le pases a la funcion el n/10.

En java seria algo como

int vec(int n,int d){
if(n==0)return 0;
else
return (((n%10==d)?1:0)+vec(n/10,d));
}
redinfocol.org

16 Diciembre, 2010, 02:25 am
Respuesta #2

cheroky

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 143
  • País: 00
  • Karma: +0/-0
  • Sexo: Masculino
  • Un globo, dos globos, tres globos...
Hola.

Aparte de la solución (cortesia de Phicar) considera que un número (no como ente matematico) es una cadena de bytes, es decir, si te lo dan almacenado como variable puedes representarlo como cadena (array de bytes o caracteres) y si ya te lo dan así, por ejemplo de la entrada estándar, más fácil aun, no tienes que hacer ese proceso. En definitiva la función recursiva solo tendria que recorrer dicho array mediante indices o puntero y buscar la coincidencia. Porsupuesto esto es valido si el enunciado no lo restringe.


Un saludo.   
\( \color{black} \overrightarrow{\mathbb{C} h\exists \mathbb{R} \varnothing k Y} \)