Module: (C++) Sub-rotinas: procedimentos e funções - 1


Problem

12/12

Mudando Argumentos

Theory Click to read/hide

Tarefa
Escreva um procedimento que troque os valores de duas variáveis.

A peculiaridade dessa tarefa é que precisamos que as alterações feitas no procedimento se tornem conhecidas pelo programa chamador.

Vamos tentar escrever o procedimento assim: void Swap ( int a, int b ) // com tal descrição dos parâmetros do procedimento, { // os valores dos argumentos (x e y) serão copiados, int c; // variáveis ​​a e b são variáveis ​​independentes não relacionadas a x e y c = a; a = b; b=c; } principal() { int x=1, y=2; Trocar(x, y); // os valores das variáveis ​​x e y (argumentos) são copiados nos parâmetros a e b cout << "x=" << x<< ", y=" << y; // x=1, y=2 } Se você executar este programa, poderá ver que os valores das variáveis ​​x e y não foram alterados. Para que os parâmetros alterem os valores dos argumentos, deve-se utilizar passagem de dados por referência. Para isso, após o nome do tipo de dado no cabeçalho da sub-rotina, você deve colocar o sinal & ("e comercial"). void Swap ( int & a, int & b ) // agora as variáveis ​​a e b obtêm os endereços das variáveis ​​x e y na memória { int c; c = a; a = b; b=c; } Uso: Se você passar um argumento por referência, somente o nome da variável (NÃO um número e NÃO uma expressão aritmética) pode estar neste local ao chamar o procedimento!< br />
NÃO chame um procedimento como este: Swap(x, 4 ); Swap(5+x, y);

Problem

Escreva um procedimento que troque os valores de duas variáveis. Tente escrevê-lo sem usar uma variável adicional. Corrija os erros, se houver.