Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Vector Dinamico en C

Estas en el tema de Vector Dinamico en C en el foro de C/C++ en Foros del Web. Hola, necesito saber si alguien tiene idea de como hacer un vector de N posiciones donde no se de ningún parámetro para el tamaño del ...
  #1 (permalink)  
Antiguo 08/09/2008, 23:46
Avatar de ChrisJay  
Fecha de Ingreso: diciembre-2005
Mensajes: 67
Antigüedad: 18 años, 4 meses
Puntos: 3
Vector Dinamico en C

Hola, necesito saber si alguien tiene idea de como hacer un vector de N posiciones donde no se de ningún parámetro para el tamaño del arreglo, o sea, no se sabe cuantas posiciones tendrá, conforme el usuario vaya dando datos de entrada el vector deberá ir "creciendo".

En si el programa pide que se validen números binarios(cero y uno) que tengan como mínimo dos ceros, todo esto ya lo tengo hecho en un vector finito.

Solo me falta la parte del vector dinámico, alguien sabe como se hace esta parte?.
  #2 (permalink)  
Antiguo 09/09/2008, 00:07
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Vector Dinamico en C

Hola, mira este ejemplo:
Código:
#include <iostream>
int main()
{
    int *vector;
    int tamano;
    std::cout << "Introdusca el tamaño del vector:";
    std::cin >> tamano;
    vector = new int[tamano];
    return 0;
}
crea un vector con el tamaño del numero que le introduscas,
funciona asi;
creas un puntero, con new solisitas memora, new se encarga de regresar la direccion de memora en este caso la direccion la guarda en vector, un mal uso de la memoria dinamica puede ocasionar que te acabes los recursos de la maquina, tienes que eliminarla despues de haberla usado por que cuando salga de la funcion en la que creaste, el puntero ya no ba a existir por lo tanto ya no podras liberar la memoria y la memora se ba a quedar ahi
para liberarla en el ejemplo anterior seria:
delete []vector;
es muy importante el uso de los corchetes y que no contengan en su interior un indice de lo contrario no livera todo el vector solo borraria el indise al que este apuntando, sin corchetes solo borraria el indice 0 y no todo el vector por lo tanto se iria llenando la memora, para agrandarlo tienes que creear otro vector dinamico, compiarlo todo en ese, borrar el existente, bolberlo a generar con el numero de indises que quieras y bolber a vaciar los datos en ese

espero haberme explicado bin de lo contrario pregunta

Última edición por Fayca; 09/09/2008 a las 00:09 Razón: uso de comas para que se entienda mejor
  #3 (permalink)  
Antiguo 09/09/2008, 00:23
Avatar de ChrisJay  
Fecha de Ingreso: diciembre-2005
Mensajes: 67
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Vector Dinamico en C

El ejemplo lo entiendo y esta bien explicado, el problema es que no necesito un programa que le pregunte al usuario por el tamaño del vector, si no que directamente pase a agregarle elementos (cero o uno únicamente) y este vaya creciendo conforme a los datos de entrada que se le van proporcionando.

Aun así gracias por la ayuda.
  #4 (permalink)  
Antiguo 09/09/2008, 00:30
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Vector Dinamico en C

Como dije en la ultima parte, lo bas aumentando como dije:
------
para agrandarlo tienes que creear otro vector dinamico, copiarlo todo en ese, borrar el existente, bolberlo a generar con el numero de indises que quieras y bolber a vaciar los datos en ese, borrar el temporal
----
cadaves que al programa le hagan falta, que genere x espacios mas, cuando este llenos de nuevo que genere x mas
  #5 (permalink)  
Antiguo 09/09/2008, 07:13
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Vector Dinamico en C

Bueno, lo de Fayca es realmente más simple, pero en la standard library tienes una clase para ello, en realidad una plantilla, que es la misma de la que deriva la plantilla "vector". Se llama "deque". He intentado buscar una referencia por cppreference.com, pero lo máximo que he encontrado han sido usos de partes de esa librería, pero no ella directamente.
Pero en cualquier manual de la STL completo aparece, por lo menos en el mío llamado "The C++ Standard Library".
__________________
Un Lannister siempre cumple sus promesas
  #6 (permalink)  
Antiguo 09/09/2008, 07:18
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Vector Dinamico en C

Sin duda, en C++ se puede aprovechar la STL pero si el titulo es correcta y la pregunta es para C entonces las funciones de memoria malloc, free, etc. son las adecuadas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 09/09/2008, 07:28
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Vector Dinamico en C

Cita:
Iniciado por Eternal Idol Ver Mensaje
Sin duda, en C++ se puede aprovechar la STL pero si el titulo es correcta y la pregunta es para C entonces las funciones de memoria malloc, free, etc. son las adecuadas.
Cierto, no me había dado cuenta que era C y no C++ xDD Error mío
__________________
Un Lannister siempre cumple sus promesas
  #8 (permalink)  
Antiguo 09/09/2008, 08:19
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: Vector Dinamico en C

Busca que hace la función realloc, que agarra una posicion de memoria y copia su contenido en otra de otro tamaño. Así puedes ir haciéndolo crecer.

Igualmente no es la mejor manera de hacerlo, creo que lo más correcto sería usar listas enlazadas.
__________________
Saludoss
Guille
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 07:40.