Sábado 16 de Noviembre de 2024, 06: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
) »
hola amigos
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: hola amigos (Leído 1289 veces)
oscarmgg
Nuevo Miembro
Mensajes: 14
hola amigos
«
en:
Sábado 8 de Noviembre de 2008, 22:35 »
0
bien tengo este programita que lo que hace es buscar un elemento en un array utilizando una funcion,el programa ejecuta bien el problema que tengo es que cuando busco el numero siguiente al ultimo de la lista leida me dice que existe y cada vez me dice lo mismo para elementos que estan despues del ultimo elemento,por favor ayudemen a encontrar el error que pueda tener ,por su colaboracion mil gracias..mi correo es
oscarydey2002@hotmail.com
Código: Text
#include"stdio.h"
int buscar_elemento(int arr[],int num,int elem);//prototipo de la funcion
int array[],resultado,i,encontrado=0;
int num,elemento;
char opcion;
int main()
{
printf("cuantos elementos contendra el array :");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("introduzca el elemento %d : ",i);
scanf("t%d",&array[i]);
}
do //realizamos el do-while para que cuando no ponga s/S salga del programa
{
printf("digite el elemento a buscar :");
scanf("%d",&elemento);
buscar_elemento(array,num,elemento);
if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
{
printf("El numero %d si existe en el arraynn",elemento);
printf("encontrado = %d",encontrado);
printf("n");
}
else //si nos da 0 es que no ha encontrado el numero
{
printf(" el elemento %d noooo se encuentra en el arraynn",elemento);
printf("encontrado = %d",encontrado);
printf("n");
}
printf("Desea buscar otro numero? S/N: ");
scanf("%s", &opcion);
}while(opcion=='s' || opcion=='S');
}
int buscar_elemento(int arr[],int num,int elem)
{
for(i=0;i<num;i++)
{
if (arr[i]==elem)
{
encontrado=1;
break;
}
}
return(encontrado);
}
Tweet
pacorubio77
Miembro MUY activo
Mensajes: 207
Re: hola amigos
«
Respuesta #1 en:
Domingo 9 de Noviembre de 2008, 03:08 »
0
Fijate en tu funcion buscar,la primera vez que entras bien,pero cuando encuentras un numero,pones encontrado=1,quiere decir que lo has encontrado,pero cuando vuelves a entrar a esa funcion,encontrado sigue estando a 1,por lo que quiere decir que siempre te dirá lo mismo, es decir ,lo puedes solucionar poniendo el encontrado a 0,es decir encontrado=0,al inicio de la funcion buscar,eso te resolveria el problema.
pacorubio77
Miembro MUY activo
Mensajes: 207
Re: hola amigos
«
Respuesta #2 en:
Domingo 9 de Noviembre de 2008, 03:16 »
0
Código: Text
#
#
# #include"stdio.h"
# int buscar_elemento(int arr[],int num,int elem);//prototipo de la funcion
# int array[],resultado,i,encontrado=0;
# int num,elemento;
# char opcion;
# int main()
# {
#
# printf("cuantos elementos contendra el array :");
# scanf("%d",&num);
# for(i=0;i<num;i++)
# {
# printf("introduzca el elemento %d : ",i);
# scanf("t%d",&array[i]);
#
# }
#
#
# do //realizamos el do-while para que cuando no ponga s/S salga del programa
# {
# encontrado=0;//para poner a 0,porque si no como encontrado=1,siempre te dira que lo ha encontrado
# printf("digite el elemento a buscar :");
#
# scanf("%d",&elemento);
# encontrado= buscar_elemento(array,num,elemento);//FIJATE QUE AQUI YA CAMBIO
# if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
# {
# printf("El numero %d si existe en el arraynn",elemento);
# printf("encontrado = %d",encontrado);
# printf("n");
# }
# else //si nos da 0 es que no ha encontrado el numero
# {
# printf(" el elemento %d noooo se encuentra en el arraynn",elemento);
# printf("encontrado = %d",encontrado);
# printf("n");
# }
#
# printf("Desea buscar otro numero? S/N: ");
# scanf("%s", &opcion);
#
#
# }while(opcion=='s' || opcion=='S');
#
# }
#
# int buscar_elemento(int arr[],int num,int elem)
# {
//PERO SOBRE TODO FIJATE AQUI,ESPERO QUE ESTE SEA EL FALLO
# encontrado=0; //lo pones asi,para que si no lo encuentra ,salgo con valor,si no lo pones saldrá con el último valor
#
# for(i=0;i<num;i++)
# {
# if (arr[i]==elem)
# {
# encontrado=1;
#
# break;//no es aconsejable poner break,pondria i=num,COMO NUM SE LO ASIGNAS A i fuerzas a salir del for,es más estetico,
# }
#
# }
# return(encontrado);
#
# }
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: hola amigos
«
Respuesta #3 en:
Domingo 9 de Noviembre de 2008, 12:42 »
0
FATAL
. No uséis variables globales...
Fr33k K0mpu73r
oscarmgg
Nuevo Miembro
Mensajes: 14
Hola compañeros...aun persiste el problema??
«
Respuesta #4 en:
Domingo 9 de Noviembre de 2008, 15:02 »
0
Ante todo agradecr muchisimo a los compañeros que aportan sus ideas tratando de solucionar los problemas.lo digo por que compañeros como mosquito segun tengo entendido por otras de sus aportaciones lo unico que hace es criticar y criticar pero de soluciones nada ,a él le sugiero mas sentido de profesionalismo si es que lo tiene por que de verdad deja mucho que desear su tiempo y no entiendo por que en vez de colaborar lo unico que hace es criticar o es que acaso nunca habra necesitado ayuda de nadie????.bien paso a lo importante de este foro a pedir ayuda a los compañeros con sentido de ayuda y es que aun persiste mi problema aun cuando he realizado los consejos y aportaciones del compañero,pues mira aun asi con encontrado=0; dentro de la funcion persiste el problema.adjunto el codigo modificado y que aun da el problema de decirme que axiste un elemento que no este en la lista de entrada,o que no existe cuando si esta dentro del array...mil gracias por sus aportaciones son muy importantes para quienes pedimos ayuda y mil gracias por no ser como mosquito el criticon...
Código: Text
#include"stdio.h"
int buscar_elemento(int arr[],int num,int elem);
int array[],resultado,i,encontrado;
char opcion;
main()
{
encontrado=0;
int num,elemento;
printf("cuantos elementos contendra el array :");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("introduzca el elemento %d : ",i+1);
scanf("t%d",&array[i]);
}
do //realizamos el do-while para que cuando no ponga s/S salga del programa
{
printf("digite el elemento a buscar :");
scanf("%d",&elemento);
resultado=buscar_elemento(array,num,elemento);
if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
{
printf("El numero %d si existe en el arraynn",elemento);
printf("encontrado = %d",encontrado);
printf("n");
}
//else //si nos da 0 es que no ha encontrado el numero
else
{
printf(" el numero %d no se encuentra en el arraynn",elemento);
printf("encontrado = %d",encontrado);
printf("n");
}
printf("Desea buscar otro numero? S/N: ");
scanf("%s", &opcion);
fflush(stdin);
}while(opcion=='s' || opcion=='S'); //en caso de que la opcion sea s, continua con el do
}
int buscar_elemento(int arr[],int num,int elem)
{
encontrado=0;//lo pongo aqui a cero ,para que si no lo encuentra ,salgo con valor,si no lo pones saldrá con el último valor
for(i=0;i<num;i++)
{
if (arr[i]==elem)
{
encontrado=1;
}
}
return(encontrado);
}
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: hola amigos
«
Respuesta #5 en:
Domingo 9 de Noviembre de 2008, 20:51 »
0
Cita de: "m0skit0"
FATAL. No uséis variables globales...
Bueno, como veo que no etendiste, no debes usar la variable
encontrado
dentro de la función porque no pertenece a la función, sino que es externa. Está mal porque sólo te va a traer quebraderos que cabeza. Lo pueds hacer igualmente sin eso:
Código: C
int
buscar_elemento
(
int
arr
[
]
,
int
num
,
int
elem
)
{
for
(
i
=
0
;
i
<
num
;
i
++
)
if
(
arr
[
i
]
==
elem
)
return
1
;
return
0
;
}
Claro que debes modificar el código de main() para usar bien la función. Por ejemplo, ¿para qué usas
resultado
?
Fr33k K0mpu73r
oscarmgg
Nuevo Miembro
Mensajes: 14
hola amigos
«
Respuesta #6 en:
Viernes 14 de Noviembre de 2008, 18:06 »
0
Hola amigos mil gracias por su ayuda aunque la verdad es que no se me ha resuelto el problema les agradezco muchisimo sus buenas intensiones eso os hace grandes .
un saludo oscar
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
hola amigos