ARREGLOS: encontrar la posicion de un elemento en un vector en C

Iniciado por gremlin, 15 Octubre 2019, 23:23 PM

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

gremlin

Hola, buenas tardes!!
Soy muy nueva en programación, estoy aprendiendo a programar en C, y me estan enseñando vectores.
Tengo un ejercicio con dos vectores en el que la posicion de un elemento en uno de los vectores va a ocupar la misma posicion en el otro. Es decir, si X dato está en el vector1 en la posición 1 entonces el dato que busco en el vector2 va estar en la misma posición (en 1).

Mi consulta es: como hago para que, segun el dato que se ingrese, poder encontrar la posición que ocupa un dato en un vector?

No sé si estoy siendo clara con mi consulta.. Desde ya muchas gracias!
(y perdón si la pregunta es muy  tonta)

K-YreX

No sé si te he entendido bien. Lo que yo entiendo es que tienes dos vectores por ejemplo:

v1 = {0,2,4,6,8}
v2 = {1,3,5,7,9}

Y por ejemplo te piden buscar el correspondiente en v2 al 4 en v1. El 4 en v1 está en la posición 2 (te recuerdo que los vectores empiezan a contar en la posición 0) entonces el correspondiente sería el elemento 2 de v2, que sería el 5.
Para ello tendrás una variable para el elemento que estás buscando (el 4 en este ejemplo) y un contador que determine su posición. Entonces vas recorriendo el primer vector y vas comparando cada elemento con el que buscas y vas incrementando el contador hasta encontrarlo. Una vez encontrado, recoges el valor de v2 que está en la posición que indica el contador.


v1 : array de enteros
v2 : array de enteros
INICIO
    PEDIR elementoBuscado // 4 en este caso
    resultado := -1 // aqui estara el resultado si lo encontramos. Si no lo encontramos se quedara con el -1
    i := 0
    MIENTRAS elementoBuscado != v1[i] && i < v1.longitud HACER // la i se va incrementando hasta que v1[i] coincida con 4 o hasta que se acabe v1
        i := i + 1
    FIN MIENTRAS
    // aqui llegamos cuando encontramos el elemento que buscamos, 4 en este caso, o cuando llegamos al final de v1
    SI elementoBuscado == v1[i] HACER // si esto se cumple sera que hemos encontrado el elemento. Si no se cumple es que el elemento buscado no existe y entonces el resultado sera un -1 o el valor que tu elijas para saber que el elemento no se ha encontrado
        resultado = v2[i] // i es el contador que nos dice la posicion del elemento. En este caso i valdria 2 y entonces resultado valdria 5
    FIN SI
FIN

Esto que te he puesto sería un algoritmo (los pasos) para resolver el ejercicio. No está en C por lo que si lo copias tal cual no te va a funcionar. Tienes que leer el algoritmo e intentar entenderlo. Cuando ya lo tengas tienes que hacerlo en C a tu manera.
Si tienes problemas para entenderlo o para escribirlo en lenguaje C puedes exponer los problemas o dudas que tengas y si tienes algo de código hecho puedes ponerlo entre etiquetas de Código GeSHi para que se vea así:

#include <stdio.h>

int main(){

}
Código (cpp) [Seleccionar]

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

gremlin

#2
.

gremlin

Cita de: YreX-DwX en 15 Octubre 2019, 23:46 PM
No sé si te he entendido bien. Lo que yo entiendo es que tienes dos vectores por ejemplo:

v1 = {0,2,4,6,8}
v2 = {1,3,5,7,9}

Y por ejemplo te piden buscar el correspondiente en v2 al 4 en v1. El 4 en v1 está en la posición 2 (te recuerdo que los vectores empiezan a contar en la posición 0) entonces el correspondiente sería el elemento 2 de v2, que sería el 5.
Para ello tendrás una variable para el elemento que estás buscando (el 4 en este ejemplo) y un contador que determine su posición. Entonces vas recorriendo el primer vector y vas comparando cada elemento con el que buscas y vas incrementando el contador hasta encontrarlo. Una vez encontrado, recoges el valor de v2 que está en la posición que indica el contador.


v1 : array de enteros
v2 : array de enteros
INICIO
    PEDIR elementoBuscado // 4 en este caso
    resultado := -1 // aqui estara el resultado si lo encontramos. Si no lo encontramos se quedara con el -1
    i := 0
    MIENTRAS elementoBuscado != v1[i] && i < v1.longitud HACER // la i se va incrementando hasta que v1[i] coincida con 4 o hasta que se acabe v1
        i := i + 1
    FIN MIENTRAS
    // aqui llegamos cuando encontramos el elemento que buscamos, 4 en este caso, o cuando llegamos al final de v1
    SI elementoBuscado == v1[i] HACER // si esto se cumple sera que hemos encontrado el elemento. Si no se cumple es que el elemento buscado no existe y entonces el resultado sera un -1 o el valor que tu elijas para saber que el elemento no se ha encontrado
        resultado = v2[i] // i es el contador que nos dice la posicion del elemento. En este caso i valdria 2 y entonces resultado valdria 5
    FIN SI
FIN

Esto que te he puesto sería un algoritmo (los pasos) para resolver el ejercicio. No está en C por lo que si lo copias tal cual no te va a funcionar. Tienes que leer el algoritmo e intentar entenderlo. Cuando ya lo tengas tienes que hacerlo en C a tu manera.
Si tienes problemas para entenderlo o para escribirlo en lenguaje C puedes exponer los problemas o dudas que tengas y si tienes algo de código hecho puedes ponerlo entre etiquetas de Código GeSHi para que se vea así:

#include <stdio.h>

int main(){

}




Genial, me entendiste bien! Muchas gracias, me re sirvió!   :D