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

array global declarando el tamano en la funcion

Estas en el tema de array global declarando el tamano en la funcion en el foro de C/C++ en Foros del Web. Buenas hay alguna forma de hacer un array de visibilidad global pero que su tamaño se introducido por el usuario? osea algo como @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 21/02/2015, 22:39
Avatar de Aleinshir  
Fecha de Ingreso: diciembre-2014
Mensajes: 14
Antigüedad: 9 años, 3 meses
Puntos: 0
array global declarando el tamano en la funcion

Buenas hay alguna forma de hacer un array de visibilidad global pero que su tamaño se introducido por el usuario? osea algo como
Código C:
Ver original
  1. int array[][];
  2.  
  3. int main() {
  4.        int tam, tam2;
  5.        printf("introduce el tamaño");
  6.        scanf("%i%i", tam, tam2);
  7.        array[tam][tam2];
  8.  
  9.        return 0;
  10. }

algo asi que sea del tipo global pero que se declare dentro de la funcion
  #2 (permalink)  
Antiguo 22/02/2015, 01:31
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: array global declarando el tamano en la funcion

Hola; una opción podría ser usando un vector (std::vector) de dos dimensiones:
Código:
std::vector<std::vector<int>> array;
que podrías reservarle la capacidad de acuerdo con la primera dimensión (que puede pensarse como la cantidad de filas) y luego insertarle (push_back) las tam2 columnas.
Quedaría así:
Código C++:
Ver original
  1. std::vector<std::vector<int>> array;
  2.  
  3. int main() {
  4.     int tam, tam2;
  5.     printf("introduce el tamaño: ");
  6.     std::scanf("%i %i", &tam, &tam2);
  7.  
  8.     array.reserve(tam);
  9.  
  10.     for (std::size_t i = 0; i < tam; ++i) {
  11.         std::vector<int> columnas(tam2);
  12.         array.push_back(columnas);
  13.     }
  14.  
  15.     return 0;
  16. }
  #3 (permalink)  
Antiguo 22/02/2015, 02:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: array global declarando el tamano en la funcion

Puedes hacerlo de otras formas.

1. Fijar un limite máximo.
Código C:
Ver original
  1. #DEFINE MAX_SZ 100
  2.  
  3. int array[MAX_SZ][MAX_SZ];
  4.  
  5. int main() {
  6.        int tam, tam2;
  7.        printf("introduce el tamaño");
  8.        scanf("%i%i", tam, tam2);
  9.        // Checar tam y tam2 si es menor a MAX_SZ
  10.        return 0;
  11. }

2. Usar malloc
  #4 (permalink)  
Antiguo 22/02/2015, 07:09
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: array global declarando el tamano en la funcion

Hola, con el vector (que debes incluirlo cómo libreria) también puedes hacer un resize ejemplo:

Código C++:
Ver original
  1. myvector.resize(5);
  2.   myvector.resize(8,100);

El primero cambia el vector a 5 cajones, y el segundo crea 8 y los llena de un valor de cien. Lo bueno de los vectores es que puedes hacer vectores de todo, es decir no sólo enteros o reales sino que de clases.

Te dejo todas las funciones miembro que puedes hacer
[URL="http://www.cplusplus.com/reference/vector/vector/"]http://www.cplusplus.com/reference/vector/vector/[/URL]

Etiquetas: funcion, global, int
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 18:14.