Jump to content
maria eduarda

Erro em swap de variáveis

Recommended Posts

maria eduarda

O código diz respeito à troca de duas variáveis, mas não entendo por que o valor final que o programa mostra é apenas o primeiro digitado. Por exemplo, se digito A=10 e B=15 quero que mostre A =15 e B =10, mas mostra A =10 e B = 10. Não percebo o erro.

int main() {
    int x, y, *ptr1, *ptr2;
    cout << "\nDigite o x:";
    cin >> x;
    cout << "\nDigite o y: ";
    cin >> y;
    ptr1 = &x;
    ptr2 = &y;
    y = *ptr1;
    x = *ptr2;
    printf("\nO valor de X: %d\n", x);
    printf("\nO valor de Y: %d\n", y);
}

 

Share this post


Link to post
Share on other sites
Rui Carlos

Alguma razão para usares apontadores?  A forma mais simples de resolver o erro é evitando o uso de apontadores.

Quanto ao problema, *ptr2 é um apontador para y.  Logo, quando fazes x = *ptr2 está a colocar em x o valor de y, que nesse momento já foi modificado para ser igual a x.

Share this post


Link to post
Share on other sites
maria eduarda
21 horas atrás, Rui Carlos disse:

Alguma razão para usares apontadores?  A forma mais simples de resolver o erro é evitando o uso de apontadores.

Quanto ao problema, *ptr2 é um apontador para y.  Logo, quando fazes x = *ptr2 está a colocar em x o valor de y, que nesse momento já foi modificado para ser igual a x.

Sim, eu apercebi-me deste erro. A razão era que eu deveria estar fazendo uma função à parte para utilizar os apontadores, que era o requerimento do exercício. Obrigada.

Share this post


Link to post
Share on other sites
HappyHippyHippo
On 12/9/2019 at 6:07 PM, maria eduarda said:

Sim, eu apercebi-me deste erro. A razão era que eu deveria estar fazendo uma função à parte para utilizar os apontadores, que era o requerimento do exercício. Obrigada.

vais fazer isto : 

- crias realmente uma função como pede o enunciado mas não uses apontadores. deu ? podes explicar porque é que a apresentação dos dados na função main parece que a função não fez nada ?

- agora em vez de mandares os valores, manda apontadores (como detesto esta expressão ...), porque razão passou a funcionar ?


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

Share this post


Link to post
Share on other sites

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.