Foros del Web » Programación para mayores de 30 ;) » Programación General »

Arreglo En C++

Estas en el tema de Arreglo En C++ en el foro de Programación General en Foros del Web. Quien me puede colaborar para realizar este algoritmo en C++ crear un vector de tamaño desconocido k no permita datos repetidos en su creacion y ...
  #1 (permalink)  
Antiguo 04/04/2005, 11:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 2 meses
Puntos: 0
Mensaje Arreglo En C++

Quien me puede colaborar para realizar este algoritmo en C++
crear un vector de tamaño desconocido k no permita datos repetidos en su creacion y que lo ordene simultaneamente.
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #2 (permalink)  
Antiguo 04/04/2005, 12:49
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 6 meses
Puntos: 7
puedes usar los vectores de la STL o simplemente un arreglo normal
para ordenar el arreglo hay muchas maneras, quick sort, bubble sort, heap sort...etc.
el mas facil es el bubble pero es el menos eficiente.
y para checar si ya esta repetido, antes de que se ingrese al vector, que recorra todas las posiciones checando si ya esta ese dato.
por ejemplo:

for(i = 0; i<tamanoarreglo; i++)
{
if( nuevodato == arreglo[i])
// no ingresar
else
//ingresar
}
  #3 (permalink)  
Antiguo 04/04/2005, 15:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 2 meses
Puntos: 0
No se

Lo k pasa es que como dije antes apenas estoy empezando a programar y si me hablan de TSL , Lo k pasa es ke no se como meter el codigo de no dejar insertar si ya existe y simultaneamente ordenarlo, me gustaria k me orientaran
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #4 (permalink)  
Antiguo 05/04/2005, 00:31
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Es lo mismo que hiciste antes pero en diferentes pasos, primero buscas por todo el array (como te mostro blackwind) que ese elemento no exista, despues buscas el primer elemento que sea mayor y desde esa posicion poner el nuevo elemento y 'subir' todos los mayores en una posicion.

En realidad teniendo en cuenta que lo vas ordenando in situ solo tenes que buscar hasta encontrar 1. ese elemento 2. un elemento mayor, no tiene sentido seguir buscando a partir de uno mayor.

Código:
int positionToInsert = -1;
for(DWORD i = 0; i < arraySize; i++)
{
  if (vector[i] > newItem) 
  { 
    positionToInsert = i;
    break; 
  }
  if (vector[i] == newItem) { break; }
}
Este bosquejo de codigo sirve si y solo si los numeros van ordenados , si lo primero que encuentra es un numero mayor quiere decir que no existe en el vector y devuelve en positionToInsert i que es donde hay que insertar el elemento si por el contrario encuentra el elemento en el vector simplemente sale del bucle y positionToInsert queda en -1 lo que nos indica que no debemos insertar nada en el vector.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 05/04/2005 a las 00:36
  #5 (permalink)  
Antiguo 05/04/2005, 07:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 2 meses
Puntos: 0
que significa DWORD
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #6 (permalink)  
Antiguo 05/04/2005, 08:08
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
DOUBLE WORD, cuatro bytes sin signo en este caso (es equivalente a unsigned long).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 11/04/2005, 16:37
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
mmm no le metas double word, mejor mmm long o double son mas "normales"

Intenta darnos un poco de tu codigo para poderte ayudar mejor va?

Saludos
  #8 (permalink)  
Antiguo 12/04/2005, 00:36
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Porque te parece a vos? ¿Cinco dias despues de la pregunta? Todo programador deberia saber el tamaño de una palabra y una doble palabra en la plataforma en la que trabaja y por cierto tu respuesta no es equivalente ya que long tiene signo y double es para numeros flotantes.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #9 (permalink)  
Antiguo 12/04/2005, 09:16
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 2 meses
Puntos: 0
en eso si tienestoda larazon
pero saben k muchachos ya tengo el program listo
voy escribir el codigo por si alguien lo necesita OK
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #10 (permalink)  
Antiguo 12/04/2005, 13:14
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
unsigned long.
Finalmente se the 64 bits no?
pero bueno Eternal_Idol si crees que he dicho muchas tonteria bien. lo siento me equivoque, no es para enojarse.....

Puede usar unsigned long en vez de DWORD que es un define de lo mismo.....

checalo y si volvi a decir una tonteria me avisas....

saludos
  #11 (permalink)  
Antiguo 12/04/2005, 13:19
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Depende la plataforma pero en este caso no, son 32 bits. Y si es un typedef de unsigned long en C/C++ (esa fue mi respuesta:"DOUBLE WORD, cuatro bytes sin signo en este caso (es equivalente a unsigned long).").

No creo que hayas dicho ninguna tonteria.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #12 (permalink)  
Antiguo 12/04/2005, 13:24
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
Jejeej es de que en todos los posts, un buen reproche para el instru.No, como crees.
Pero bueno, dudas aclaradas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.