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

Componer un nombre de variable con otra variable

Estas en el tema de Componer un nombre de variable con otra variable en el foro de C/C++ en Foros del Web. Que tal, Estoy desarrollando un programa en c++ donde necesito leer los datos de varias materias y pasarlos a variables. Entonces cree variables que son ...
  #1 (permalink)  
Antiguo 25/07/2011, 00:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 37
Antigüedad: 13 años, 5 meses
Puntos: 0
Componer un nombre de variable con otra variable

Que tal,

Estoy desarrollando un programa en c++ donde necesito leer los datos de varias materias y pasarlos a variables.
Entonces cree variables que son iguales para las 5 materias, por ejemplo nota_materia_1
nota_materia_2
nota_materia_3
etc.

Cuando lo proceso en un ciclo, el proceso es elmismo para todos los datos, pero tengo que estar creando un bloque para cada materia.

Lo que quiero saber es si hay alguna manera de hacer esto por ejemplo

for(i=1;i<=cantidad_de_materias;i++)
nota_materia_"i"=datoleido_de_archivo;

Espero que se entienda.

Si es que no es posible en este lenguaje, en alguno si?


Saludos
  #2 (permalink)  
Antiguo 25/07/2011, 05:54
 
Fecha de Ingreso: julio-2011
Mensajes: 76
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Componer un nombre de variable con otra variable

Que yo sepa esto no es posible para C/C++.

Yo lo he intentado en unos cuantos lenguajes y no he podido hacerlo nunca.
Tendrás que recurrir a otros métodos, como por ejemplo meter las notas de las materias en un vector.
  #3 (permalink)  
Antiguo 25/07/2011, 06:00
Avatar de sephirot47  
Fecha de Ingreso: marzo-2011
Ubicación: BCN
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Componer un nombre de variable con otra variable

Esto si no estoy equivocado no se puede hacer en c++. Utiliza un array. Lo que tú dices sí posible en javascript, AS3, etc. pero en lenguajes de bajo nivel como c++ normalmente no se puede. Yo utilizaría una array... notasMaterias[0], notasMaterias[1], y así con cada nota...
__________________
Todo lo que tiene un inicio tiene un final inevitable...

¡ No olvides darme karma si te fui útil ^^ !
  #4 (permalink)  
Antiguo 25/07/2011, 14:06
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Componer un nombre de variable con otra variable

En C++ tienes la clase map que es un tipo de contenedor asociativo que utiliza claves (keys) únicas y no índices numéricos como sucede en el array para acceder a los valores. Como menciona sephirot47 hay lenguajes de programación como JavaScript, ActionScript, PHP, etc. que implementan este tipo de contenedor de manera nativa (array asociativo), sólo que los keys están restringidos a identificadores de tipo string, en un map de C++ puedes utilizar cualquier tipo de dato que tenga definido el operador <.

Ejemplo 1

Ejemplo2:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. using namespace std;
  5.  
  6. int main(){
  7.     map<string, int> scores;
  8.  
  9.     for(int i = 1; i <= 5; ++i){
  10.         scores[string("subject") + char('0' + i)] = i;
  11.     }
  12.  
  13.     cout << scores["subject1"] << endl;
  14.     cout << scores["subject2"] << endl;
  15.     cout << scores["subject3"] << endl;
  16.     cout << scores["subject4"] << endl;
  17.     cout << scores["subject5"] << endl;
  18.  
  19.     return 0;
  20. }

Ejemplo3:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. class MyType{
  6.     double x;
  7.     public:
  8.     MyType(double val):x(val){}
  9.     bool operator<(const MyType& m)const{return x < m.x;}
  10.     double get(){return x;}
  11. };
  12.  
  13. int main(){
  14.     map<MyType, int> myMap;
  15.     MyType a(12.3);
  16.     MyType b(5.5);
  17.  
  18.     myMap[a] = 0;
  19.     myMap[b] = 1;
  20.  
  21.     cout << "myMap[a=" << a.get() << "] = " << myMap[a] << endl;
  22.     cout << "myMap[b=" << b.get() << "] = " << myMap[b] << endl;
  23.  
  24.     return 0;
  25. }
Utiliza lo que creas más conveniente y dale prioridad a lo más simple, opciones tienes muchas.
  #5 (permalink)  
Antiguo 25/07/2011, 15:28
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Componer un nombre de variable con otra variable

Eso que quieres hacer no se puede porque C/c++ es un lengujae que se compila. No esinterpretado en el momento. Asi que el compilador tiene que saber a que se estar refiriendo y a que lugar de la memorai apuntar antes de terminar la compilacion.
En el caso de los arrays simple hace una cuenta (suma o resta) para calcular el lugar de la memoria.

Etiquetas: contador, nombres, variables
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 15:50.