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.
![Neurótico](http://static.forosdelweb.com/fdwtheme/images/smilies/scared.png)
| |||
![]() 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 |
| |||
no, por que no se como es la instruccion para dejar ingresar unicamente numeros pares. |
| |||
Gracias con esto lo hago, sos un bacan |
| |||
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; }, |
| ||||
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 |
| |||
Listo ahora si lo tengo y me funciona |
| ||||
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 |
| |||
como hago para k solucionar este problema. |
| ||||
¿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 |
| |||
MEMORIA DINAMICA?,me podrias aclarar este concepto? |
| ||||
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 |
| |||
Sabes cuando le estoy dando el tamaño al vector lo hago de vec[100]. |
| ||||
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 |
| |||
Claro; lo hare con una inicializacion |
| ||||
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 |
| |||
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 |
| ||||
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 |
| |||
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. |
| ||||
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 |
| |||
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? |