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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como hacer un vector dinámico?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como hacer un vector dinámico?  (Leído 2,038 veces)
Ivancamilo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Como hacer un vector dinámico?
« en: 27 Septiembre 2016, 03:31 am »

Hola!
Estoy manejando un programa en dev c++, donde tengo que crear una estructura de tipo vector que tiene un tamaño fijo de 3, y una función para capturar los datos que se van a almacenar en la estructura, la idea que cada vez que yo ingrese a la función de capturar los datos; el tamaño de la estructura vaya incrementando conforme aumentan los registros; pero no tengo idea de como podría hacer eso…
Ayuda este es el código que tengo.
Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include<windows.h>
  4. //#define gt(x,y) {COORD a;a.X = x; a.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),a);}
  5. #define gt(x,y) {HANDLE hcon;hcon = GetStdHandle(STD_OUTPUT_HANDLE); COORD dwPos;dwPos.X = x;dwPos.Y= y;SetConsoleCursorPosition(hcon,dwPos); }
  6. #include <cstdlib>
  7.  
  8. #define max 3
  9.  
  10. using namespace std;
  11.  
  12. struct cedula{
  13.  
  14.    char ncedula[30],nom[30],ape[30],fn[15],fe[15];
  15.    float estatura;    
  16. }vec[max];
  17.  
  18. int capturo(int);
  19. void formu();
  20.  
  21. int main(){
  22. int h=0;
  23.    char op;
  24.    system("color 3f");
  25. do{
  26. system("cls");
  27. cout<<"1- Capturar"<<endl;
  28. cout<<"2- Consultar"<<endl;
  29. cout<<"3- Modificar"<<endl;
  30. cout<<"4- Eliminar"<<endl;
  31. cout<<"5- Salir"<<endl;
  32. cout<<"Que opcion desea ejecutar? :"<<endl;
  33.        op=getche();
  34.  
  35. switch (op){
  36. case '1':
  37. h=capturo(h);
  38.  
  39. break;
  40. case '2':
  41.  
  42. break;
  43. case '3':
  44.  
  45. break;
  46. case '4':
  47.  
  48. break;
  49. }
  50. }while(op!= '5');
  51.    return 0;
  52.    system("pause");    
  53. }
  54. void formu(){
  55. gt(4,6);cout<<"digite el numero de la ceduala";
  56. gt(4,7);cout<<"digite el nombre";
  57. gt(4,8);cout<<"digite su apellidos";
  58. gt(4,9);cout<<"digite su fecha de nacimiento ";
  59. gt(4,10);cout<<"digite su fecha de expedicion ";
  60. gt(4,11);cout<<"digite su estatura";
  61. }
  62.  
  63. int capturo(int j){
  64. char anadir='s';
  65. int i=j;
  66.  
  67. for(;(i<max && anadir=='s' );i++){
  68.  
  69. system("cls");
  70.     //cout<<"el valor de i es: "<<i<<endl;
  71.     gt(4,3);cout<<"registro "<<++i<<" de "<<max<<endl;
  72.  
  73. formu();
  74.     gt(44,6);gets(vec[i].ncedula);
  75.  
  76. gt(21,7);gets(vec[i].nom);
  77.     gt(24,8);gets(vec[i].ape);
  78. gt(34,9);gets(vec[i].fn);
  79.     gt(34,10);gets(vec[i].fe);
  80.     gt(23,11);cin>>vec[i].estatura;
  81. fflush(stdin);
  82. gt(4,16);cout<<"desea anadir mas registros S/N";
  83. gt(36,16);anadir=getche();
  84. getch();
  85.  
  86. --i;
  87. }
  88. return i;
  89.  
  90. }
  91.  


En línea

JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Como hacer un vector dinámico?
« Respuesta #1 en: 28 Septiembre 2016, 00:32 am »

¿El tamaño tiene que ser 3 porque así te lo imponen? Cuando aumente de tamaño, ¿cuánto quieres que aumente? ¿No puedes usar la librería <vector> de C++ que internamente te aumenta el vector sin tú hacer nada?

Al margen de eso, la idea sería crear un vector de tamaño n (donde n es el tamaño antiguo + aumento) y copiar todos los elementos en el nuevo vector. La copia se realizaría con un for que dará m vueltas (donde m es la longitud del vector viejo). Para saber cuándo tienes que hacer el aumento, podrías llevar un contador que aumenta cada vez que insertas un nuevo elemento en el vector (contador++). Cuando contador = m - 1, entonces llamas a la función de aumentar tamaño.

Si lo que estas pensando es que el vector debe aumentar el tamaño de 1 en 1, es mejor que no lo hagas así, es muy ineficiente. Quizá una buena idea (si es que quieres hacerlo así) sería aumentar el vector al doble del tamaño antiguo.


« Última modificación: 28 Septiembre 2016, 00:35 am por JonaLamper » En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
vector dinamico - herencia
Programación C/C++
littlero 2 3,451 Último mensaje 7 Diciembre 2010, 05:25 am
por littlero
[C++] Reordenar vector dinámico de objetos
Programación C/C++
Rockmore 2 5,786 Último mensaje 17 Marzo 2011, 19:05 pm
por Rockmore
Como hacer mapa de edificio dinámico?
Desarrollo Web
L0Ko 1 2,926 Último mensaje 21 Noviembre 2012, 09:57 am
por #!drvy
Hacer un POST Dinamico en PHP [Hacer Post a dos paginas php]
PHP
Graphixx 4 4,351 Último mensaje 14 Septiembre 2014, 06:14 am
por JorgeEMX
Problemas para mostrar un vector lineal dinámico
Programación C/C++
Cero++ 5 1,910 Último mensaje 10 Diciembre 2018, 01:13 am
por Cero++
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines