SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: satturno en Martes 24 de Enero de 2006, 21:00

Título: Declaracion De Un Numero De Variables Desconocido
Publicado por: satturno en Martes 24 de Enero de 2006, 21:00
saludos,

como puedo usar un numero N de variables en mi programa, si N es un numero definido por el usuario.

por ejemplo, digamos que N = 5, entonces tendria var1, var2, var3, var4 y var5

entonces tendria que declararlas asi:

int var1, var2, var3, var4, var5;

pero digamos que N cambia segun lo defina el usuario; entonces como puedo declarar estas variables que no se cuantas son, es posible usar un for?

algo asi como:

for (int i = 0; i = N; i++)
{
     // Y DECLARAR LAS VARIABLES ACA
}

si alguien me puediera dar una pista ...
Título: Re: Declaracion De Un Numero De Variables Desconocido
Publicado por: rir3760 en Miércoles 25 de Enero de 2006, 15:04
Para eso tienes que reservar memoria de forma dinamica ya sea con malloc (en C) o con el operador new (en C++). Un ejemplo sencillo en C estandar es:
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.    int *variable;
  7.    int num_vars = 10;
  8.    int i;
  9.    
  10.    /* Reservamos memoria para 'num_vars' elementos */
  11.    variable = malloc(num_vars * sizeof *variable);
  12.    
  13.    /* Verificamos que no hayan ocurrido errores */
  14.    if (variable == NULL)
  15.       return EXIT_FAILURE;
  16.    
  17.    /* Asignamos un valor seudo-aleatorio a cada uno */
  18.    for (i = 0; i < num_vars; i++)
  19.       variable[i] = rand() % 10;
  20.    
  21.    /* Imprimos el contenido de los elementos */
  22.    for (i = 0; i < num_vars; i++)
  23.       printf("variable[%d] == %d\n", i, variable[i]);
  24.    
  25.    /* Liberamos la memoria reservada y terminamos */
  26.    free(variable);
  27.    return EXIT_SUCCESS;
  28. }
  29.  

Un saludo
Título: Re: Declaracion De Un Numero De Variables Desconocido
Publicado por: satturno en Viernes 27 de Enero de 2006, 20:12
Gracias rir3760  :D , disculpa la tardanza en responder, me quede sin internet unos dias.

Ok, deja lo pruebo y a ver que sale.

Saludos