PROGRAMA Y ARREGLOS

Iniciado por junior108, 25 Abril 2019, 02:14 AM

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

junior108

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 (cpp) [Seleccionar]

#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
clrscr
int Num[5]={1,3,5,7,100},x,j;

cout<< "Ingrese un numero:";
cin>>x;
if (x=Num){

cout <<"Existe";
}

else
{
cout<< "No existe";
}
getch();
return 0;

}


MOD: Etiqueta GeSHi corregida.

K-YreX

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:

    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
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

Beginner Web

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 (cpp) [Seleccionar]
//Declaración de un arreglo de enteros de 8 elementos
int arreglo[8]={1,2,3,4,5,6,7,8};
//Declaración de una variable lógica inicializada en falso
bool encontrado=false;
//Declaración de las variables: i(índice), buscado(valor buscado)
int i, buscado=1;
//Recorrido del arreglo usando un for, para i desde la posición inicial 0
//Mientras que i sea menor a 8 y a encontrado no se le cambie su valor
for(i=0;i<8 && !encontrado;i++)
if(arreglo[i]==buscado)//Si encontramos el valor buscado dentro del arreglo...
encontrado=true;//Cambiamos el valor de la variable logica encontrado a true
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
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
else
cout<<"No se encontró dicho elemento"<<endl;
  ;-)
7w7

codX

Beginner Web si sos la de la foto Hola por dios!!

CalgaryCorpus

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.


Aqui mi perfil en LinkedIn, invitame un cafe aqui