Crear Variable en runtime con nombre propio

Iniciado por Riki_89D, 5 Agosto 2010, 22:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Riki_89D

Hola que tal andan?¿

bueno tengo una duda,con el operador "new" y "delete" creamos variables dinamica en tiempo de ejecutación y las podemos destruir cuando se nos entoje,pero mi caso es otro ahora,necesito (si es posbibe) crear una variable en runtime pero mediante un control EDIT poner el nombre de dicha variable tmb,por ejemplo en el control edit escribir "Texto" i que se cree una variable que se llame Texto y que sea de tipo char (en este caso claro),osea que haga esto:
Código (cpp) [Seleccionar]

char Texto;


lo de "Texto" es el nombre que yo escribo en el EDIT,como se puede hacer eso?¿


salu2

leogtz

Que yo sepa no se puede, tienen que ser nombres ya establecidos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Riki_89D


bizco

realmente es absurdo, el nombre de la variable es valido para ti, luego se transforma en una direccion de memoria, no tiene mucho sentido. ¿que intentas hacer?

Riki_89D

Bueno no son mas que pruebas que realizo yo no intento hacer nada pero keria probar aver si se podria hacer eso i despues desde otro control edit pues indicarle el nombre de la variable a acceder y pues acceder a esa variable,,no es mas que eso,puede sonar tonteria pero necesito hacerlo,claro es una posicion de memoria pero nse como hacerlo :(

bizco

pues si quieres ponerle un nombre te haces una lista que contenga un campo char[N] y ahi pones el nombre.

struct tal
{
char Nombre[N]
int valor
otra *tal
}

con eso podras tener tantas variables como quieras con su nombre.

Riki_89D

Hola ctlon,perdona mi ignorancia,gracias a gente como tu aprendo por eso:)

es que no entiendo muy bien lo de la estructura,

es decir por ejemplo en lo de char[N] esa N que es lo que iria alli?¿


saludos

bizco

#7
N es el numero de caracteres.

carlitos_jajajajaja

Puede que este codigo sea demasiado avanzado, pero es la unica forma que conozco para crear variables de usuario, lo comente lo mejor q pude, pero pregunta no mas si no entendiste aslgo

Tendras que averiguar por el contenedor map de la libreria c++, que te permite crear "tablas" de datos
Código (cpp) [Seleccionar]

#include <iostream>
#include <map> //el contenedor map, investiga sobre el
#include <string>
using namespace std;

typedef map<string, int> TablaVariables;

void mostrar_menu();

/*Un par es un tipo que contiene 2 valores
En este caso una cadena y un entero
que es lo q necesita una variable: nombre y valor
*/
typedef pair<string, int> variable;

int main()
{
TablaVariables variables_del_usuario;
    char opcion_elegida = 0;

    while(opcion_elegida != 4)
    {
        mostrar_menu();
        cin >> opcion_elegida;
        cin.get();
        switch(opcion_elegida)
        {
            case '1':
            {
                     string nombre;

                     /*Creamos un par con informacion sobre el elemento que agregaremos,
                     y un valor bool que indica si la variable era nueva o repetida
                     */
                     pair<TablaVariables::iterator, bool> resultado;
                     cout << "Introduzca el nombre de la nueva variable" << endl;
                     getline(cin, nombre);

                     /*Usamos el metodo insert de map, con una variable con el nombre especificado
                     y el valor por defecto de los enteros: 0
                     el resultado nos dira si la variable ya existia o no
                     */
                     resultado = variables_del_usuario.insert(variable(nombre, 0));
                     if(resultado.second == true)
                     {
                         cout << "Variable agregada ;)" << endl;
                     }
                     else
                     {
                         cout << "ERROR!! Ya existe una variable con ese nombre" << endl;
                     }
                     break;
            }
            case '2':
            {
                     string nombre;

                     /*Contendra el valor de la variable buscada
                     si esa variable no existe, sera igual a variables_del_usuario.end()
                     */
                     TablaVariables::iterator resultado;
                     cout << "Introduzca el nombre de la variable que quiere ver" << endl;
                     getline(cin, nombre);
                     resultado = variables_del_usuario.find(nombre);

                     if(resultado == variables_del_usuario.end())
                     {
                         cout << "ERROR!!! Esa variable no existe" << endl;
                     }
                     else
                     {
                         /*resultado es un iterador (algo asi comop un puntero) al tipo variable*/
                         cout << "El valor de la variable " << nombre << " es " << resultado->second << endl;
                         cout << "desea modificarlo??? (y/n)" << endl;
                         char yn;
                         cin >> yn;
                         if(yn == 'y')
                         {
                             int nuevovalor;
                             cout << "Introduzca nuevo valor para " << nombre << endl;
                             cin >> nuevovalor;
                             variables_del_usuario[nombre] = nuevovalor;
                         }
                     }
            }
        }
    }


}


void mostrar_menu()
{
    cout << "\n\n\n";
cout << "-----MENU-----" << endl;
cout << "Presione 1 para agregar una variable" << endl;
cout << "Presione 2 para ver el valor de una variable" << endl;
cout << "Presione 3 para salir :) " << endl;
cout << "introduzca su opcion " << endl;
}





Espero que te sirva :D
Merodeo los foros, esperando el momento de decir algo inteligente...

Se necesita paciencia