Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: junior108 en 25 Abril 2019, 02:14 am



Título: PROGRAMA Y ARREGLOS
Publicado por: junior108 en 25 Abril 2019, 02:14 am
Bueno lo que pasa es que apenas tengo un mes en la universidad y apenas voy aprendiendo c++ pero me dejaron de tarea que realice un programa donde el usuario escriba un numero y ver si se encuentra en el arreglo, ya llevo rato intentándolo ,no se si alguien tiene una idea de como se hace, pero también quiero aclarar NO QUIERO EL CODIGO, por que quiero aprender, pero si alguien tiene una sugerencia
mi código es este ,al menos así lo tenia planeado ,si alguien me puede ayudar ya que siempre me aparece que no existe.

Código
  1. #include <iostream.h>
  2. #include <math.h>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7. clrscr
  8. int Num[5]={1,3,5,7,100},x,j;
  9.  
  10. cout<< "Ingrese un numero:";
  11. cin>>x;
  12. if (x=Num){
  13.  
  14. cout <<"Existe";
  15. }
  16.  
  17. else
  18. {
  19. cout<< "No existe";
  20. }
  21. getch();
  22. return 0;
  23.  
  24. }
  25.  

MOD: Etiqueta GeSHi corregida.


Título: Re: PROGRAMA Y ARREGLOS
Publicado por: K-YreX en 25 Abril 2019, 03:48 am
Como estás empezando y parece que quieres aprender te comento un par de cosas más:
  • La librería <iostream> es sin la h.
  • Las librerías que terminan en ".h" son características de C, aunque se pueden usar en C++, las de C++ pierden el ".h" y se añade una "c" al principio. (<math.h> -> <cmath>).
  • La librería <conio.h> no es recomendable usarla ya que no es estándar. Es decir, que no está disponible en todos los compiladores por lo que puede dar errores. Además no es necesaria. En tu caso la incluyes para usar la función <getch>. Esta función se puede sustituir en C++ por <cin.get()> (incluida en <iostream>).
También usas la función <clrsrc()> para limpiar la pantalla. Primero te recomendaría, como estás empezando, no usar funciones fanzy (funciones de adorno) y centrarte en resolver el problema que se propone.
  • En caso de querer limpiar la pantalla tienes <system("cls")> (Windows) y <system("clear")> (Linux) para las cuales solo es necesaria la librería <cstdlib>.

Ahora vamos al problema. Para comprobar si un elemento existe en un array/arreglo/vector hay que recorrer dicho array elemento por elemento. La idea sería la siguiente:
Código:
i := 0
encontrado = false
mientras !encontrado and i < n
    si v[i] == elemento_buscado
        encontrado = true
    fin si
fin mientras

si encontrado
    "El elemento esta en el array"
sino
    "El elemento no esta en el array"
fin si

Usamos una variable de tipo booleana <bool> para determinar si ya hemos encontrado el elemento que buscamos. Recorremos el array y comparamos cada elemento con el elemento buscado, si coinciden, actualizamos el valor de <encontrado> para que termine el bucle. Así una vez encuentra el elemento, no sigue recorriendo el array.
El bucle puede terminar por dos razones: por haber llegado al final del arreglo, lo que podemos traducir como (i == n) siendo <n> el tamaño del array o porque la variable <encontrado> vale <true>. Entonces cuando termina el bucle, comprobamos si la variable <encontrado> vale <true>, si es así es que el elemento existe, sino es que ha terminado el bucle por la otra condición y entonces no existe el elemento.

Te dejo que conviertas ese pseudocódigo a C++ para que practiques y cualquier duda, puedes comentarla aquí.
Suerte :-X


Título: Re: PROGRAMA Y ARREGLOS
Publicado por: Beginner Web en 25 Abril 2019, 04:28 am
Hola, en matemáticas hay una función que se llama pertenencia entre conjuntos, es algo similar lo que tienes que hacer pero en C/C++

Código
  1. //Declaración de un arreglo de enteros de 8 elementos
  2. int arreglo[8]={1,2,3,4,5,6,7,8};
  3. //Declaración de una variable lógica inicializada en falso
  4. bool encontrado=false;
  5. //Declaración de las variables: i(índice), buscado(valor buscado)
  6. int i, buscado=1;
  7. //Recorrido del arreglo usando un for, para i desde la posición inicial 0
  8. //Mientras que i sea menor a 8 y a encontrado no se le cambie su valor
  9. for(i=0;i<8 && !encontrado;i++)
  10. if(arreglo[i]==buscado)//Si encontramos el valor buscado dentro del arreglo...
  11. encontrado=true;//Cambiamos el valor de la variable logica encontrado a true
  12. if(encontrado==true)//Si el valor buscado existe dentro del arreglo mostramos por pantalla que el valor se encontró en la posición i del arreglo
  13. cout<<"Encontrado en la posición "<<i<<endl;//Hay que tener en cuenta que reutilice la variable i, los arreglos empiezan desde la posicion 0
  14. else
  15. cout<<"No se encontró dicho elemento"<<endl;
  ;-)


Título: Re: PROGRAMA Y ARREGLOS
Publicado por: codX en 4 Mayo 2019, 03:37 am
Beginner Web si sos la de la foto Hola por dios!!


Título: Re: PROGRAMA Y ARREGLOS
Publicado por: CalgaryCorpus en 4 Mayo 2019, 06:16 am
Es posible hacer la busqueda sin hacer 2 comparaciones por cada vuelta del ciclo, solo es necesario hacer 1 comparacion, pero se requiere modificar el arreglo.