Logo Hardware.com.br
Ricardo Guimarães
Ricardo Guim... Veterano Registrado
1.3K Mensagens 5 Curtidas

3 variáveis int, como exibi-las ao usuário em uma linha de código?

#1 Por Ricardo Guim... 04/03/2007 - 15:17
Fiz o código abaixo, C++:

# include <iostream>
using namespace std;
int main()
{
int int1 = 7;
int int2 = 3;
int int3 = 5;
int x;
for (x=0;x<4;x++)
cout<<"int"<<x;
return 0;
}


Ele não funciona. O objetivo é mostrar os valores de int1, int2 e int3, como pode-se perceber pela lógica do código. Sei que é fácil fazer com array, mas, principalmente por curiosidade, quero fazer nesse método.

Pela lógica imagino que deva-se criar uma nova variável string para armazenar a saída "int"x e depois converter isso para int, mas não sei fazer.

Obrigado pela atenção!
Ricardo Guimarães
Ricardo Guim... Veterano Registrado
1.3K Mensagens 5 Curtidas
#5 Por Ricardo Guim...
04/03/2007 - 16:20
Fergo, sou iniciante (Java na faculdade e C), portanto não sei fazer um programa funcional. Em Java dá para converter string para inteiro, imagino que em C também seja possível. Veja minha lógica para que o programa funcione e diga se dá para implementar a solução:

# include
using namespace std;
int main()
{
int int1 = 7;
int int2 = 3;
int int3 = 5;
int x;
string y;
for (x=0;x<4;x++)
{
// Abaixo y será "int1", depois "int2" e depois "int3"
y = cout<<"int"< // Converter a palavra "int1" para a variável inteira "int1"
convert string(y) to int(y) // código nada a ver, apenas a lógica
// Finalmente, exibir os valores de int1, int2 e int3
cout< }
return 0;
}

Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#6 Por Fergo
04/03/2007 - 16:30
Certo, mas você está confundindo algumas coisas. As funções de converter strings em inteiros não servem para transformar o nome de uma variavel em o nome de uma variavel inteira para que seu valor possa ser impresso.

Por exemplo. No C existe a funcao atoi(), que converte string em inteiro. Ela é usada para converter TIPOS de dados. Se voce tem o número 85 armazenado em uma string ( um char por exemplo ), mas precisa converter esse numero para inteiro. Então voce usa a atoi() que faz isso para voce, pega o 85 da string e converte para uma variavel do tipo INT.

O que você nao pode fazer é tentar "formar" o nome da váriavel durante o runtime. É um pouco complexo de explicar, então vou tentar com outro exemplo. Suponha que voce tenha uma váriavel INT declarada no código com o nome de 'minhavariavel'. Voce so consegue utilizar o valor dessa variavel, mencionando o seu nome diretamente no código. Suponto que voce tenha uma string "minha" e outra "variavel", você não vai conseguir usar o valor da 'minhavariavel' fazendo uma junção entre as palavras "minha" e "variavel".

As variáveis devem ser declaradas e so podem ser usadas mencionando o seu nome diretamente no código, não se pode "formar" o nome durante a execução.

Um tanto quanto confuso, eu sei, mas espero que ajude.

Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
Gordon
Gordon Tô em todas Registrado
2.3K Mensagens 49 Curtidas
#8 Por Gordon
04/03/2007 - 17:09
Como o colega disse, acho que não é possível fazer isto em C ou C++, mas fiz algo parecido no código abaixo, não programo comumente em C++ , tenho só noções, por isso se alguém que tenha mais experiência puder dar alguma dica melhor rindo_ate_agora.png .

#include <iostream>
#include <map>
#include <string>

using namespace std;
int main()
{

map<string, int> variaveis;
variaveis["int1"] = 7;
variaveis["int2"] = 3;
variaveis["int3"] = 5;

char vname[5];
for (int x=1;x<4;x++){
sprintf(vname,"int%d",x);
printf("%d \n", variaveis[vname]);
}
return 0;
}
Cansei da Privada! -- Eu acredito demais na sorte. E tenho constatado que, quanto mais duro eu estudo, mais sorte eu tenho. (Adaptado - Thomas Jefferson)
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#10 Por jqueiroz
06/03/2007 - 16:18
Eu desconheço de algo que faça o que voce quer no C,

Dá pra fazer por macros...

#define INTN(x) int##x
...
cout << INTN(1)
...


Mas é importante ver que o parâmetro da macro INTN() é uma constante string, ou seja, você não pode usar variáveis aí. Se você usa "INTN(1)", vc vai ter a variável "int1", se usar "INTN(x)", vai ter "intx", mesmo que "x" exista e valha 1.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Gordon
Gordon Tô em todas Registrado
2.3K Mensagens 49 Curtidas
#11 Por Gordon
06/03/2007 - 18:55
jqueiroz disse:
Dá pra fazer por macros...

#define INTN(x) int##x
...
cout << INTN(1)
...
Mas é importante ver que o parâmetro da macro INTN() é uma constante string, ou seja, você não pode usar variáveis aí. Se você usa "INTN(1)", vc vai ter a variável "int1", se usar "INTN(x)", vai ter "intx", mesmo que "x" exista e valha 1.


J. relamente tentei muito por ai, mas não coneguia de forma alguma lembrar do "##" !
Cansei da Privada! -- Eu acredito demais na sorte. E tenho constatado que, quanto mais duro eu estudo, mais sorte eu tenho. (Adaptado - Thomas Jefferson)
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal