Viernes 15 de Noviembre de 2024, 16:55
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Pasar Un Vector Como Argumento De Funcion
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Pasar Un Vector Como Argumento De Funcion (Leído 1458 veces)
Dunadan
Nuevo Miembro
Mensajes: 20
Pasar Un Vector Como Argumento De Funcion
«
en:
Martes 28 de Junio de 2005, 22:59 »
0
Buenas, concurro a esta comunidad para aclarar mis dudas. HAce poco encontre uno ejercicios de recursividad bastante buenos, y como la vi muy por encima me puse a practicarlos. En uno tenía que buscar un elemento en un vector de manera recursiva, con una funcion obviamente. Pero cuando llamo a la funcion se me cuelga el compilador, diciendome que efectuo una operacion no permitida. Aca está el código:
Código: Text
#include <stdio.h>
#include <stdlib.h>
int BuscarN(int *a,int);
main()
{
int iVector[10];
int iNumero=0,iPosicion=0;
register int i;
for(i=0;i<10;i++)
iVector[i]=rand() % 100;
for(i=0;i<10;i++)
printf("%d\t",iVector[i]);
printf("Ingrese un numero, se buscara recursivamente en un vector\n");
scanf("%d",&iNumero);
iPosicion=BuscarN(iVector,iNumero); /* acá se cuelga */
if (iPosicion)
{
printf("\nNumero %d encontrado en posicion %d",iNumero,iPosicion);
}
else
{
printf("\nNumero %d no encontrado",iNumero);
}
}
int BuscarN(int *a,int x)
{
int i=0,r=0;
if(i<10)
{
if(a[i] != x)
{
i++;
BuscarN(a,x);
}
else
{
return i;
}
}
return r;
}
Tal vez sea un error de adentro de la función, pero la verdad no lo encuentro, y error de sintaxis no creo que sea ya que ni el borland ni el dev-c++ me tiraron error en la compilación. Si aparte pueden corregir la función o cualquier otra sugerencia es bienvenida
.
Saludos
Tweet
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas. En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"
[size=109]H.P. Lovecraft "El Ceremonial"
[/size]
pitukilloloco
Miembro MUY activo
Mensajes: 104
Re: Pasar Un Vector Como Argumento De Funcion
«
Respuesta #1 en:
Miércoles 29 de Junio de 2005, 00:12 »
0
Hay varios errores en la función recursiva. El principal es que nunca hay una terminación de la recursividad y esta termina hasta que se derborda la pila en donde se depositan los datos cada vez que se llama recursivamente esta función. Otro error es que si la función
BuscarN
regresa un entero entonces cada vez que se llama recursivamente a esta función debe de llamarse con un
return
y no solamente invocando a la función como si esta no regresara valor alguno. Otra observación que se puede hacer a este ejemplo es que es muy artificial. Cuando se enseña la recursividad se ponen ejemplos que por su definición son recursivos, como los árboles binarios, el cálculo del factorial, el cálculo del máximo cómun divisor entre dos enteros o el ejemplo de las torres de Hanoi, pero en este caso con una simple iteración secuencial del vector desde el inicio hasta el final se puede determinar si hay un número en él y no es necesario la recursividad.
Dunadan
Nuevo Miembro
Mensajes: 20
Re: Pasar Un Vector Como Argumento De Funcion
«
Respuesta #2 en:
Miércoles 29 de Junio de 2005, 15:25 »
0
Gracias por la ayuda y la corrección de errores, me funcionó haciendo a la variable i en Static, y poniendole el return al BuscarN dentro de la función. La verdad que este ejercicio es muy "artificial", en el momento que lo leí, lo primero que se me ocurrió fue la versión iterativa, sólo lo hice para practicar.
Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas. En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"
[size=109]H.P. Lovecraft "El Ceremonial"
[/size]
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Pasar Un Vector Como Argumento De Funcion