Jump to content

variavel com nome de variavel


Recommended Posts

Posted
#include <iostream>
int main() {
    int repeatedname = 0;
    while (repeatedname++ < 10) {
        int repeatedname = 100;
        std::cout << repeatedname << std::endl;
    }
}

Disponível para verificação no ideone.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

podes declarar como mesmo nome desde que seja em "scopes" diferentes ... normalmente o compilador da um warning mas deixa compilar

como no exemplo do pmg apresentou, verifica que a variavel "repeatedname" está declarada na função main de novamente dentro do "scope" do ciclo while.

a variavel que é usada será sempre a do "scope" mais interno

IRC : sim, é algo que ainda existe >> #p@p
Posted

penso que o que ele quer é algo que é possivel com o php, por exemplo:

$str="pikax";
$$str="P@P"; //o nome desta variavel será "pikax";
echo $pikax."<br>"; //irá imprimir "P@P"

penso que a questão seja esta, se sim pelo o que sei é impossível declarar isto em C++, as variáveis têm que ter um nome especifico antes de ser compilado.

Podes sempre usar o "scope" como o pmg disse, mas se explicares o que realmente precisas de fazer, somos capazes de te ajudar.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

:dontgetit: por acaso isso cria uma variavel com um nome de o valor de outra variavel? e que acho que nao me  perceberam bem! ou n tou a percerber essa logica!

O que o pikax fez sim, faz isso. Talvez não te estejamos a perceber, mas tambem podias usar um pouco mais de cuidado com o português, está bastante descuidado, torna-se de facto difícil de perceber.

Se eu percebi bem, queres variáveis cujo nome seja guardado noutras variáveis. Não sei se há outra forma mais elegante de o fazer em C++, eu usaria um hashmap para esse efeito.

EDIT:

@HappyHippyHippo possível é, eu acabei de dar uma solução.

'Arranjar outra solução' neste caso é uma resposta um pouco 'violenta'. Muitos algoritmos baseiam-se neste tipo de funcionalidade, descartá-la é deitar fora muito tipo de soluções. Programação funcional e resolução de tipos de dados em runtime são a motivação por detrás de vários paradigmas e de muitas linguagens de programação. As vantagens são bem conhecidas e demasiado significantes para se deitar fora assim à partida.

Posted

como criar uma variavel ou ponteiro com o nome de outra variavel? 😁

criar uma variavel com o nome igual a outra variavel não é guardar o nome da variavel.

fundamentalmente, dentro do mesmo scope, não é possivel declarar duas variáveis distintas com o mesmo nome ...

IRC : sim, é algo que ainda existe >> #p@p
Posted

criar uma variavel com o nome igual a outra variavel não é guardar o nome da variavel.

fundamentalmente, dentro do mesmo scope, não é possivel declarar duas variáveis distintas com o mesmo nome ...

Ah ok, não tinha percebido, mas isso não dá em linguagem nenhuma, porque isso é simplesmente o contrário da definição de variável. Um elemento sintático não ambíguo num espaço de nomes.

Posted

Eu acho que estão a meter o carro à frente dos bois. Penso que primeiro é preciso conseguir perceber o que é que o seuqram realmente quer 😁

@seuqram

Consegues explicar aquilo que queres de outra forma, ou exemplificar o que é que pretendes implementar?

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted

Estive a ler algumas vezes a pergunta do seuqram e não consigo mesmo adivinhar o que ele quer.

pressiso de ajuda urgente!

como criar uma variavel ou ponteiro com o nome de outra variavel? 😁

Criar "várias"(mais que uma) variaveis com o mesmo nome

//includes etc etc

int main()
{
   
    int var=4;  //variavel inteira
   cout<<"var="<<var<<endl;
   
   //char var = '5';  //errado!!!!
   
   //se "criar-mos" um scope "novo"
   {
       char var= '5'; //certo, mas não conseguimos aceder  ao var int
       cout<<"var="<<var<<endl;
   }

   cout<<"var="<<var<<endl; //irá ser int
   
   char * str="123455667";
   char *endstr=str+strlen(str)-1;//já não me lembro se é assim 
   for(char *var=str;var!=endstr;var++)
  {
      {
           float var=12.4f;
          cout<<"var="<<var<<endl;
      }
      cout<<"var="<<var<<endl;
   }

   cout<<"var="<<var<<endl;
}

Penso que aqui mostra muitos dos casos do scope e como podemos "brincar", mas isto fica muito confuso, até eu fiquei perdido a escrever 😁

Se quiseres criar uma variável string com um determinado valor, por exemplo "PAP", e quiseres criar uma variável com esse nome relativo, isso não é possível em C++ só em PHP, é melhor eu explicar em código:

//ISTO NAO FUNCIONA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//NÂO ACONSELHADO A PESSOAS SENSÍVEIS, PODE TRAUMATIZAR O CÓDIGO!!! 

//não me responsabilizo por danos psicológicos causados após ler este código

int main()
{
   string str;
   cout<<"introduza o nome da string:";
   cin>>str;
  /*
   string str.c_str()+"1"="error!!!!!";//nao sei o que meter para criar a varivel com o valor de str :S 
   //em c++ nem tem lógica isto, o que me veio à cabeça com mais lógica foi mesmo returnar o valor da string str.
   // meti str.c_str()+"1", por causa do cout em baixo.

   //PHP seria "$$str."1";"

  //não sei como chamar a variavel LOOOL
  cout<< "str.c_str()+"1" = "<<str.c_str()+"1"<<endl;
  //PHP seria algo como: echo "$$str=".$$str;
  */
  cout<<"str="<<str<<endl;
}

No comments....

:dontgetit: por acaso isso cria uma variavel com um nome de o valor de outra variavel?

Em C++ acho que é impossível fazer algo como o 2 codigo que pôs aqui, é simplesmente ilógico programar em C++ a pensar em criar um variável em que o nome dela seja o valor de outra, é possível em PHP mas sem ser em casos excecionais penso que não se deva usar, porque o código fica confuso.

Já agora o código que escrevi aqui no outro post é em PHP NÂO É EM C++!!!!

penso que o que ele quer é algo que é possivel com o php, por exemplo:

$str="pikax";
$$str="P@P"; //o nome desta variavel será "pikax";
echo $pikax."<br>"; //irá imprimir "P@P"

penso que a questão seja esta, se sim pelo o que sei é impossível declarar isto em C++, as variáveis têm que ter um nome especifico antes de ser compilado.

Podes sempre usar o "scope" como o pmg disse, mas se explicares o que realmente precisas de fazer, somos capazes de te ajudar.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

nnnnnnnnnnnnnnnn :nono1: vejam la se percebem:

tenho uma variavel chamada variavel1 com valor: variavel2

eu quero que voces me dissessem como criar uma variavel que fique com o nome do valor da variavel1 (que seria:variavel2)

depois passavam a haver 2 variaveis chamadas:

variavel1

variavel2

se o valor da variavel1 fosse variavel3 queria criar uma variavel chamada variavel3 e ficavam 2 variaveis chamadas:

variavel1

variavel3

(quero criar uma variavel cujo nome seja um valor de outra veriavel)

Posted

o utilizador escolhe um nome e depois é criado uma variavel com esse nome!

onde posso utilizar isso???

para editores.

o proposito deste topico é tambem entrar na base de dados das variaveis de uma forma dificil:

fopen ("(o valor de uma variavel)","wb");

assim iria criar/buscar um ficheiro chamado (o valor de uma variavel)

nao é possivel!?

Posted

Então, aquilo que queres é guardar a valor numa variável para que possas utilizar posteriormente. Não precisas que a variável tenha esse nome.

Como estamos na secção de C++, a forma mais fácil será recorreres a strings:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string input = "";
    cin >> input;
}

O que está na variável de input pode ser, por exemplo, o nome do ficheiro que o utilizador quer abrir.

FILE *xpto = fopen(input.c_str(), "wb");

Se o utilizador quiser abrir um ficheiro chamado "abcd", a variável input vai ter o valor "abcd", logo o fopen(input.c_str(), "wb") será exactamente o mesmo que teres fopen("abcd", "wb").

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted
Em 21/03/2012 às 15:38, seuqram disse:

nnnnnnnnnnnnnnnn :nono1: vejam la se percebem:

tenho uma variavel chamada variavel1 com valor: variavel2

eu quero que voces me dissessem como criar uma variavel que fique com o nome do valor da variavel1 (que seria:variavel2)

depois passavam a haver 2 variaveis chamadas:

variavel1

variavel2

se o valor da variavel1 fosse variavel3 queria criar uma variavel chamada variavel3 e ficavam 2 variaveis chamadas:

variavel1

variavel3

(quero criar uma variavel cujo nome seja um valor de outra veriavel)

Já é praí a quarta vez que digo. Tu queres um hashmap. Os hashmaps servem precisamente para isso.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.