• Viernes 3 de Mayo de 2024, 07:25

Autor Tema:  hola amigos  (Leído 1212 veces)

oscarmgg

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
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
  1.  
  2.  
  3. #include"stdio.h"
  4. int buscar_elemento(int arr[],int num,int elem);//prototipo  de la funcion
  5. int array[],resultado,i,encontrado=0;
  6. int num,elemento;
  7. char opcion;
  8.  int main()
  9. {
  10.  
  11.   printf("cuantos elementos contendra el array :");
  12.   scanf("%d",&num);
  13.   for(i=0;i<num;i++)
  14.   {
  15.     printf("introduzca el elemento %d : ",i);                      
  16.     scanf("t%d",&array[i]);
  17.    
  18.    }
  19.  
  20.  
  21.   do //realizamos el do-while para que cuando no ponga s/S salga del programa
  22.     {  
  23.  
  24.     printf("digite el elemento a buscar :");
  25.    
  26.     scanf("%d",&elemento);
  27.     buscar_elemento(array,num,elemento);
  28.     if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
  29.     {
  30.         printf("El numero %d si existe en el arraynn",elemento);
  31.         printf("encontrado = %d",encontrado);
  32.         printf("n");
  33.     }
  34.     else //si nos da 0 es que no ha encontrado el numero
  35.     {
  36.         printf(" el elemento %d noooo  se encuentra en el arraynn",elemento);
  37.         printf("encontrado = %d",encontrado);
  38.         printf("n");
  39.      }
  40.      
  41.     printf("Desea buscar otro numero? S/N: ");
  42.     scanf("%s", &opcion);
  43.    
  44.  
  45. }while(opcion=='s' || opcion=='S');
  46.  
  47. }
  48.  
  49.  int buscar_elemento(int arr[],int num,int elem)
  50.    {  
  51.                          
  52.    
  53.      for(i=0;i<num;i++)                        
  54.         {
  55.            if (arr[i]==elem)
  56.             {
  57.                 encontrado=1;
  58.                
  59.                 break;
  60.             }
  61.    
  62.         }
  63.     return(encontrado);
  64.        
  65.     }
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
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
    • Ver Perfil
Re: hola amigos
« Respuesta #2 en: Domingo 9 de Noviembre de 2008, 03:16 »
0
Código: Text
  1. #
  2. #  
  3. # #include"stdio.h"
  4. # int buscar_elemento(int arr[],int num,int elem);//prototipo  de la funcion
  5. # int array[],resultado,i,encontrado=0;
  6. # int num,elemento;
  7. # char opcion;
  8. #  int main()
  9. # {
  10. #  
  11. #   printf("cuantos elementos contendra el array :");
  12. #   scanf("%d",&num);
  13. #   for(i=0;i<num;i++)
  14. #   {
  15. #     printf("introduzca el elemento %d : ",i);                      
  16. #     scanf("t%d",&array[i]);
  17. #    
  18. #    }
  19. #  
  20. #  
  21. #   do //realizamos el do-while para que cuando no ponga s/S salga del programa
  22. #     {  
  23. #  encontrado=0;//para poner a 0,porque si no como encontrado=1,siempre te dira que lo ha encontrado
  24. #     printf("digite el elemento a buscar :");
  25. #    
  26. #     scanf("%d",&elemento);
  27. #    encontrado= buscar_elemento(array,num,elemento);//FIJATE QUE AQUI YA CAMBIO
  28. #     if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
  29. #     {
  30. #         printf("El numero %d si existe en el arraynn",elemento);
  31. #         printf("encontrado = %d",encontrado);
  32. #         printf("n");
  33. #     }
  34. #     else //si nos da 0 es que no ha encontrado el numero
  35. #     {
  36. #         printf(" el elemento %d noooo  se encuentra en el arraynn",elemento);
  37. #         printf("encontrado = %d",encontrado);
  38. #         printf("n");
  39. #      }
  40. #      
  41. #     printf("Desea buscar otro numero? S/N: ");
  42. #     scanf("%s", &opcion);
  43. #    
  44. #  
  45. # }while(opcion=='s' || opcion=='S');
  46. #  
  47. # }
  48. #  
  49. #  int buscar_elemento(int arr[],int num,int elem)
  50. #    {  
  51.              //PERO SOBRE TODO FIJATE AQUI,ESPERO QUE ESTE SEA EL FALLO
  52. #                  encontrado=0;    //lo pones asi,para que si no lo encuentra ,salgo con valor,si no lo pones saldrá con el último valor
  53. #    
  54. #      for(i=0;i<num;i++)                        
  55. #         {
  56. #            if (arr[i]==elem)
  57. #             {
  58. #                 encontrado=1;
  59. #                
  60. #                 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,
  61. #             }
  62. #    
  63. #         }
  64. #     return(encontrado);
  65. #        
  66. #     }
  67.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: hola amigos
« Respuesta #3 en: Domingo 9 de Noviembre de 2008, 12:42 »
0
FATAL. No uséis variables globales...

oscarmgg

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
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
  1.  
  2. #include"stdio.h"
  3. int buscar_elemento(int arr[],int num,int elem);
  4. int array[],resultado,i,encontrado;
  5. char opcion;
  6.  main()
  7. {
  8.   encontrado=0;    
  9.   int num,elemento;
  10.   printf("cuantos elementos contendra el array :");
  11.   scanf("%d",&num);
  12.   for(i=0;i<num;i++)
  13.   {
  14.     printf("introduzca el elemento %d : ",i+1);                      
  15.     scanf("t%d",&array[i]);
  16.    
  17.    }
  18.  
  19.  
  20.   do //realizamos el do-while para que cuando no ponga s/S salga del programa
  21.     {  
  22.  
  23.     printf("digite el elemento a buscar :");
  24.     scanf("%d",&elemento);
  25.     resultado=buscar_elemento(array,num,elemento);
  26.  
  27.    
  28.  
  29.     if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
  30.     {
  31.         printf("El numero %d si existe en el arraynn",elemento);
  32.         printf("encontrado = %d",encontrado);
  33.         printf("n");
  34.     }
  35.     //else //si nos da 0 es que no ha encontrado el numero
  36.     else
  37.     {
  38.    
  39.    
  40.         printf(" el numero %d no se encuentra en el arraynn",elemento);
  41.         printf("encontrado = %d",encontrado);
  42.         printf("n");
  43.      }
  44.      
  45.      
  46.     printf("Desea buscar otro numero? S/N: ");
  47.     scanf("%s", &opcion);
  48.     fflush(stdin);
  49.  
  50. }while(opcion=='s' || opcion=='S'); //en caso de que la opcion sea s, continua con el do
  51.  
  52. }
  53.  int buscar_elemento(int arr[],int num,int elem)
  54.    {  
  55.     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
  56.      
  57.      for(i=0;i<num;i++)                        
  58.         {
  59.             if (arr[i]==elem)
  60.             {
  61.                 encontrado=1;
  62.        
  63.                
  64.             }
  65.        
  66.         }
  67.             return(encontrado);
  68.    
  69.        
  70.     }
  71.  
  72.  
  73.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
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
  1. int buscar_elemento(int arr[],int num,int elem)
  2. {  
  3.     for(i=0;i<num;i++)                        
  4.         if (arr[i]==elem)
  5.             return 1;
  6.  
  7.     return 0;      
  8. }
  9.  

Claro que debes modificar el código de main() para usar bien la función. Por ejemplo, ¿para qué usas resultado?  :devil:

oscarmgg

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
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