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

Necesito Ayuda En C++(please)

Estas en el tema de Necesito Ayuda En C++(please) en el foro de Programación General en Foros del Web. Que tal: Estoy empezando a programar y necesito crear un vector de tamaño desconocido que solo permita ingresar numeros pares. Si me pueden ayudar con ...

  #1 (permalink)  
Antiguo 31/03/2005, 08:09
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
Busqueda Necesito Ayuda En C++(please)

Que tal:
Estoy empezando a programar y necesito crear un vector de tamaño desconocido que solo permita ingresar numeros pares.
Si me pueden ayudar con el codigo fuente en C++.
gracias.

Última edición por juanmana3; 31/03/2005 a las 09:44 Razón: Dudas
  #2 (permalink)  
Antiguo 31/03/2005, 09:47
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Tenes que crear una clase vector? ¿Podes usar la STL? ¿Lo tenes que hacer estilo C?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 31/03/2005, 10:06
 
Fecha de Ingreso: enero-2003
Ubicación: Stgo, Chile
Mensajes: 179
Antigüedad: 21 años, 4 meses
Puntos: 0
mmm si es de tamaño desconocido tendria ke ser una cola.. oa lgo asi
  #4 (permalink)  
Antiguo 31/03/2005, 10:45
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Porque? Me parece que con cualquier clase que use memoria dinamica no habria problema.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 31/03/2005, 11:31
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
como les dije apenas estoy empezando a programar entonces no manejo muchos conceptos en lo que estoy.
¡si tengo que crear una clase vector!
  #6 (permalink)  
Antiguo 31/03/2005, 11:42
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Hiciste algo hasta ahora?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 31/03/2005, 12:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
no, por que no se como es la instruccion para dejar ingresar unicamente numeros pares.
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #8 (permalink)  
Antiguo 31/03/2005, 12:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Se utiliza el modulo (resto de una division):

Código:
if (!(numero % 2)) 
{
  //es par
}
else { //no es par }
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 31/03/2005 a las 12:56
  #9 (permalink)  
Antiguo 31/03/2005, 14:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
Gracias con esto lo hago, sos un bacan
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #10 (permalink)  
Antiguo 31/03/2005, 14:39
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
De nadas, me alegro de que te sirva
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 31/03/2005, 16:09
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
mira tengo esto y no me da?
no entiendo k pasa revisalo y decime si esta bien

void arreglo::crear(){
int sw;
int dato;
clrscr();
gotoxy(5,5);
cout<<"Do you wan to run this program?";
gotoxy(0,5);
cin>>dato;
clrscr();
if(dato % 2==0){
vec[i]=dato;
i++;
}
else
{
gotoxy(5,5);
cout<<"Dato to enter is not valid;"
}
clrscr();
gotoxy(5,7);
cout<<"IN:1 OUT:2";
gotoxy(0,5);cin>>sw;
},
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #12 (permalink)  
Antiguo 31/03/2005, 17:19
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
no me ha dado aun
  #13 (permalink)  
Antiguo 01/04/2005, 00:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Acabo de usar este codigo (muy simple) para problarlo, y funciona, si es un numero impar me sale por pantalla "Dato to enter is not valid":

Código:
class arreglo
{
public:
  arreglo()
  {
     i = 0;
  }
  void crear();
  int vec[50];
  int i;
};

void arreglo::crear()
{
  int sw;
  int dato;
  cout << "Do you wan to run this program?";
  cin >> dato;
  if(dato % 2 == 0)
  {
    vec[i] = dato;
    i++;
  }
  else
  {
    cout << "Dato to enter is not valid";
  }
  cout << "IN:1 OUT:2";
  cin >> sw;
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 01/04/2005 a las 00:18
  #14 (permalink)  
Antiguo 01/04/2005, 05:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
Listo ahora si lo tengo y me funciona
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #15 (permalink)  
Antiguo 01/04/2005, 05:52
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 19 años, 3 meses
Puntos: 0
Muy bueno el codigo, solo tiene una falla, solo te vale para 50 elementos del vector.
  #16 (permalink)  
Antiguo 01/04/2005, 06:19
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Ese codigo no es para usar, es UNICAMENTE para probar la funcion crear, la clase arreglo la esta haciendo juanma3.

PD. Por cierto en un mensaje anterior aclare que segun mi opinion se puede hacer con cualquier clase que use memoria dinamica.("Me parece que con cualquier clase que use memoria dinamica no habria problema")
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 01/04/2005 a las 07:38
  #17 (permalink)  
Antiguo 01/04/2005, 09:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
como hago para k solucionar este problema.
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #18 (permalink)  
Antiguo 01/04/2005, 09:26
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Estas usando la clase que te di de ejemplo? Tenes que usar memoria dinamica para implementarlo sino no cumple el requisito de no saber el tamaño del array.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #19 (permalink)  
Antiguo 01/04/2005, 09:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
MEMORIA DINAMICA?,me podrias aclarar este concepto?
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #20 (permalink)  
Antiguo 01/04/2005, 09:32
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Si, la memoria se puede reservar dinamicamente (durante el tiempo de ejecucion). C tiene las funciones malloc y free que sirven para reservar y librerar memoria respectivamente y C++ incorpora los operadores new y delete.

char str[] = "Esta memoria es estatica, pero mem es dinamica";
char *mem = (char*)malloc(1024);
strcpy(mem, str);
free(mem);

int *unk = new int[val];
delete[] unk;
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #21 (permalink)  
Antiguo 01/04/2005, 09:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
Sabes cuando le estoy dando el tamaño al vector lo hago de vec[100].
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #22 (permalink)  
Antiguo 01/04/2005, 09:42
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Bueno, obviamente eso no sirve para cumplir con el requrimiento de tamaño indeterminado.

¿Necesitas que el array vaya creciendo o con una inicializacion alcanza?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #23 (permalink)  
Antiguo 01/04/2005, 09:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
Claro; lo hare con una inicializacion
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #24 (permalink)  
Antiguo 01/04/2005, 09:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Entonces es muy simple, se le pasa al constructor el tamaño del array, se lo inicializa con esa variable (con malloc o new) y en el destructor se libera la memoria (con free o delete).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #25 (permalink)  
Antiguo 01/04/2005, 09:59
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
mira tengo este otro ejercicio.
crear un vector de tamaño desconocido, eliminar todos los valores repetidos.

tengo una idea mas o menos como hacerlo en pseudo.
primero me gustaria saber si es mejor hacerlo con while o con for

tengo esto
int i//indice
int n//tamaño

for(i=1;i<=n;i++){
for(j=[i+i],j<n,j++){
if(vec[i]==vec[j]){
vec[i]=vec[j]
n=n-1
}
}
}

CREES QUE ME FUNCIONARA
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #26 (permalink)  
Antiguo 01/04/2005, 10:02
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Tengo la leve sospecha de que el ejercicio anterior era mucho mas simple y no era necesario crear una clase ...

Necesito saber que es lo que te enseñaron hasta ahora porque eliminar los valores repetidos de un array suena un poco extraño.

¿Sera un vector de la STL lo que te piden?

vector<int> xVector;
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #27 (permalink)  
Antiguo 01/04/2005, 10:21
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
STL?, si el profesor nos sice k debemos de crearlo con class arreglo, void arreglo::

Asi es como lo entiendo, que el usuario digite el tamaño y los elemtos k desee,
despues de haberlo creado, se deben eliminar los valores repetidos, creo que necesitamos una variable k me compare lo k tiene el vec[1], con las demas posiciones y luego de haberlo recorrido hasta k compare la siguiente con las demas asi sucesivamente, y si encuentra valores repetidos se eliminan.
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #28 (permalink)  
Antiguo 01/04/2005, 10:29
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Si, vas por el camino correcto entonces pero con eliminar quiere decir solo establecer ese elemento a 0 o tambien volver a posicionar todos los siguientes ...

Me explico, se encuentra en la posicion 10 un valor repetido y tiene 70 elementos, tendra que 'bajar' de posicion todos los elementos posteriores ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #29 (permalink)  
Antiguo 01/04/2005, 10:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 29
Antigüedad: 19 años, 1 mes
Puntos: 0
si por que mira en el ejmplo k a n=n-1;
me explico esto quiere decir el tamaño del vector cambia, me entiendes.
pero sabes donde tengo la duda cuando lo encuentra con la instruccion k le tengo realmente me lo emliminara?
__________________
Juan Manuel Arango
[email protected]
[email protected]
:-p
  #30 (permalink)  
Antiguo 01/04/2005, 10:54
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Lo probaste?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 17:22.