elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con la eliminacion de elementos repetidos en un vector en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con la eliminacion de elementos repetidos en un vector en c++  (Leído 4,576 veces)
abejaatareada

Desconectado Desconectado

Mensajes: 1



Ver Perfil
ayuda con la eliminacion de elementos repetidos en un vector en c++
« en: 11 Mayo 2016, 06:49 am »

hola.. por favor quisiera saber como genero numeros manualmente pero llegado el caso que repita el programa me indique que lo he hecho y pues que lo elimine.. es decir que me genere en otro vector los numeros sin repeticiones.

llevo esto (se que no es mucho):


Código
  1. int main()
  2. {
  3.  
  4. int v1[15],i,n,N, expo=2,v2;
  5. cout <<"\n Tamano del vector:  "; cin>>N;
  6. for (i=0;i<N;i++)
  7. {
  8.    cin>> v1(i);
  9. }
  10.  


Mod: Los códigos deben ir en etiquetas GeSHi, no debes escribir en mayúsculas


« Última modificación: 11 Mayo 2016, 06:50 am por engel lex » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: ayuda con la eliminacion de elementos repetidos en un vector en c++
« Respuesta #1 en: 11 Mayo 2016, 07:07 am »

Este código no es el mejor que he visto. No sé si sonará demasiado duro, pero este código es un poquito chapucero. Primero, aunque le pides al usuario que indique el tamaño del vector, si este excede un tamaño de 15, el programa probablemente te lance un error. Segundo, el código es imposible que compile pues tiene dos errores (que yo haya percibido). El más grave que he visto es que intentas acceder a los elementos del arreglo 'v1' con paréntesis, y se hace con corchetes (el otro es que no incluyes las librerías pertinentes).

No sé si lo que voy a decir ahora es cierto, pero no parece que lo hayas intentado. Aun así, te aconsejo que declares un segundo vector (por ejemplo, v2) del mismo tamaño que el 'v1' y que le añadas los elementos de v1. A medida que vayas añadiendo elementos al v2, comprueba si el elemento que vas a añadir está en v2; si lo está, entonces no lo insertes.


« Última modificación: 11 Mayo 2016, 07:14 am por class_OpenGL » En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
kgarcia994

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: ayuda con la eliminacion de elementos repetidos en un vector en c++
« Respuesta #2 en: 11 Mayo 2016, 12:43 pm »

Hola buenas,

Primero de todo, queria decirte que, como bien dice nuestro compañero class_OpenGL, el codigo en si tiene un error bastante grave a la hora de declarar el vector.
Ya que le dices que es de tamaño 15.
Pero si el usuario introduce 20, el bucle for ara 20 vueltas, es decir v1[16]por ejemplo, te petaria el programa porque la posicion 16 no existe


Seguidamente. no se si he entendido bien tu pregunta.
He entendido que quieres crear un vector de enteros, en el qual vas introduciendo numeros sin que se repitan, es decir que si quieres introducir un 2 y ya esta introducido,  cree un vector con los numeros sin repetir.

Si es lo que he entendido, yo creo que es mas facil hacer una busqueda de los numeros ya introducidos y mirar si el que quieres introducir esta o no.

En caso de que este no se lo dejas introducir y le vuelves a pedir otro numero.

Te dejo aqui el codigo que he echo suponiendo que he entendido bien tu pregunta.

Código:

#include <iostream>

using namespace std;

int main()
{
 
 
int Numero; //Declaro variable Numero que es el tamaño del vector
int i=0,j, NumeroIntroducir; //Declaro "i" y "j" que los usare de contadores
 
//Declaro un booleano para hacer una busqueda en el vector de enteros
bool bBuscaNumero = false;

//Pedimos el tamaño del vector
do{
cout << "Tamaño del vector: ";
cin >> Numero;

//Controlamos que el usuario no ponga 0
if(Numero<=0)
cout<<"Tamaño de vector incorrecto" <<endl;

}while(Numero<=0);

//Lo declaramos con el tamaño pedido anteriormente
int v1[Numero];

//Hacemos un do-while para que vaya haciendo todo el vector
do{
     
//Pedimos que introduzca numero
cout << "Introduce numero: ";
cin >> NumeroIntroducir;
 
/*Le decimos que si la i es diferente a 0 entre
Esto es para que la primera vuelta assigne numero si o si ya que no estan repetidos*/
if (i!=0){

//Ponemos j a 0 y el booleano en falso
j=0;
bBuscaNumero = false;
 
/*Mientras la j sea mas pequeña que la i (posicion hasta la que tendra numeros rellenados)
Y el booleano sea falso*/
while(j<i && !bBuscaNumero){
/*si el numero del vector que esta en la posicion j
es igual al numero pedido al usuario*/
if(v1[j]==NumeroIntroducir)
bBuscaNumero = true; //pondremos el booleano en true   
else
j++;//sino pasaremos a la siguiente posicion 
}
 
if(!bBuscaNumero){ //Si el booleano es falso (es decir que no lo ha encontrado)
v1[i]=NumeroIntroducir; //Lo introducimos
i++; //I sumamos una posicion mas
}else{
cout <<"Numero ya introducido"<<endl;//Informamos de que lo ha encontrado

 
}else{
//Aqui añadimos el primer numero a la primera posicion
v1[0]=NumeroIntroducir;
i++; //y sumamos una posicion mas
}
}while(i<Numero); //Mientras la i sea mas pequeña que el Numero (tamaño de vector) ara todo lo anterior
   
   return 0;
}

« Última modificación: 11 Mayo 2016, 12:59 pm por kgarcia994 » En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: ayuda con la eliminacion de elementos repetidos en un vector en c++
« Respuesta #3 en: 11 Mayo 2016, 13:22 pm »

Lo he dicho muchas veces, pero soy un pesado.

En C++, llama a estas construcciones "arreglos" o "array" o "matriz" si lo prefieres, pero no vector.

Vector en C++ es un contenedor de la STL, que se usa con la librería del mismo nombre.

De hecho un "vector" en C++ no tiene un tamaño predefinido, es una de sus grandes ventajas, que puedes añadir o quitar elementos del mismo tranquilamente
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
kgarcia994

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: ayuda con la eliminacion de elementos repetidos en un vector en c++
« Respuesta #4 en: 11 Mayo 2016, 13:39 pm »

Toda la razon del mundo, es un array de enteros lo que el queria crear, lapsus mio jajaja , al leer en su mensaje vector me ha confundido al explicarse-lo, pero asi supongo que lo entendera.

Y como bien dices, los vectores son dinamicos, por lo cual puedes ir añadiendo numeros y quitando a tu voluntad, sin limite de espacio.

Como vuelvo a decir, ha sido fallo mio al leerle vector   :silbar:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar elementos repetidos de un vector
Programación General
GaLaN GaLaNaSo 3000 2 63,006 Último mensaje 16 Noviembre 2011, 06:44 am
por osolmm
Llenar un vector con 10 elementos no repetidos en Ruby
Scripting
hack289z 0 4,066 Último mensaje 25 Octubre 2011, 02:24 am
por hack289z
arreglos con elementos repetidos--
Programación C/C++
bobitttyy 1 1,830 Último mensaje 6 Abril 2015, 14:38 pm
por engel lex
Array elementos repetidos
Programación C/C++
LGG 1 2,647 Último mensaje 5 Mayo 2015, 17:32 pm
por eferion
Ayuda!! agregar elementos no repetidos de un arreglo a otro
Java
juankefdg 6 7,576 Último mensaje 19 Abril 2017, 01:07 am
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines