Dev - C++ - Como integrar el valor de una variable en la declaración de otra

 
Vista:

Como integrar el valor de una variable en la declaración de otra

Publicado por Laber (3 intervenciones) el 11/11/2020 02:29:03
Hola amigos. Gracias por interesaros en mi problema.
Necesito ayuda con un pequeño programa que estoy haciendo para controlar un Arduino y mi duda es la siguiente:

¿Como podría incluir el valor de una variable en el nombre de otra para poder declararlas de forma dinámica?
Me explico mejor con un ejemplo.
Necesito declarar X número de variables. Para ello creo un bucle For controlado por otra variable (N) y hago que ejecute una instrucción del tipo:

Int pinN = N

Creo recordar que existe una forma de aplicar directamente el valor de la variable en la instrucción precediendola de un caracter especial. No recuerdo exactamente cuál, pero pongamos que por ejemplo fuese €. El ejemplo sería:

Int pin€N = N

Es decir, que si N vale 3 debería crear la variable pin3 con valor 3.
Alguien tiene idea de cómo puede hacerse esto?
No se si voy bien encaminado o si he sido claro en mi explicación pero de todas formas, muchas gracias por su atención
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como integrar el valor de una variable en la declaración de otra

Publicado por Rodrigo (539 intervenciones) el 11/11/2020 05:14:52
Por que no usar arreglos y hacer pin[i] = i ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como integrar el valor de una variable en la declaración de otra

Publicado por Laber (3 intervenciones) el 11/11/2020 11:48:38
No es exactamente en lo que estaba pensando, pero parece buena solución. Lo probaré, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como integrar el valor de una variable en la declaración de otra

Publicado por Martín (158 intervenciones) el 11/11/2020 14:04:03
"Creo recordar que existe una forma de aplicar directamente el valor de la variable en la instrucción precediendola de un caracter especial..."

No en C++.

El compilador de C++ arma una tabla de símbolos, pero los nombres de las variables no se conservan una vez que el programa está compilado, no hay forma de obtener esos nombres en tiempo de ejecución.

Supongo que la opción que te propone Rodrigo es la más directa. También por comodidad, o por similitud con otros lenguajes, podrías usar un std::map o algún otro contenedor estándar, que es lo más "dinámico" que puede ser un nombre en C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como integrar el valor de una variable en la declaración de otra

Publicado por Laber (3 intervenciones) el 11/11/2020 23:10:35
Finalmente la solución de Rodrigo cumplió con mis necesidades al 100%.
El único problema es que al declarar un array tienes que usar una constante, por lo que tuve que declar una constante llamada N_Dispositivos y cambiando el valor que le asigno antes de compilar el código consigo crearlos del tamaño necesario para las necesidades concretas.

Gracias a todos por su ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como integrar el valor de una variable en la declaración de otra

Publicado por Rodrigo (539 intervenciones) el 12/11/2020 02:36:42
No es necesaria la constante si puedes pedir memoria dinamica.

Donde hayas puesto algo como

1
int miArreglo[N];

puedes cambiarlo por

1
int *miArreglo;
y mas tarde cuando ya sepas cuanta memoria requieres, haces (en C)

1
miArreglo = (int *) malloc( sizeof(int) * M );

o en C++

1
miArreglo = new int[M];

con cualquiera de estas opciones te obligas a:
- no pasarte mas alla de la memoria que pediste
- liberarla al final, con free si usaste malloc, con delete si usaste new.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar