Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

[Resolvido] Exercício de parâmetros C++

  • Por favor, faça o login para responder
9 respostas neste tópico

#1 Leonardo Peixoto

Leonardo Peixoto
  • Membros
  • 80 posts

Postado 11 dezembro 2011 - 20:11

Pessoal estou estudando parâmetros mas não está entrando direito in my head, poderam esboçar a resolução do seguinte exercício?:

5) Faça uma função que incremente o valor de um número passado por parâmetro. Utilize a passagem de parâmetro por referência para fazer o incremento.

Grato !

Editado por Mário Monteiro, 17 dezembro 2011 - 08:14 .
Retirada a palavra "HELP" do Titulo ou Descrição

  • 0

#2 Shurd

Shurd
  • Membros
  • 51 posts

Postado 11 dezembro 2011 - 22:27

funcao(int *variavel)

{

   variavel+=10;

}

main(){

int variavel;



scanf(&variavel);

funcao(&variavel);

}

  • 0

#3 guidjos

guidjos
  • Moderadores
  • 583 posts

Postado 11 dezembro 2011 - 22:49

O código acima está errado.

O que, especificamente, você não entendeu sobre o conceito de 'parâmetro'?
  • 0

#4 Shurd

Shurd
  • Membros
  • 51 posts

Postado 11 dezembro 2011 - 22:55

Opa é verdade, é por parametro haha, então é o seguinte, nesse tipo de passagem voce faz uma copia do valor que voce possui, portanto para de fato mudar o valor da variavel que voce tem terá de retornar um valor da funcao e atribuir isso a sua variavel.

int funcao(int variavel)
{
   return (variavel+10)
}
main(){
int variavel;

scanf("%d",&variavel);
variavel = funcao(variavel);
}

Editado por Shurd, 11 dezembro 2011 - 22:58 .

  • 0

#5 guidjos

guidjos
  • Moderadores
  • 583 posts

Postado 12 dezembro 2011 - 07:11

Creio que estejam confundindo 'passagem por parâmetro' e 'passagem por referência'. Como a pergunta é sobre C++, não vou tentar responder. Se fosse em C, eu argumentaria que 'passagem por referência' é simplesmente 'passagem por valor do endereço' do argumento.

Independente da linguagem que se usa, é bom seguir a convenção de que parâmetro é o que uma função recebe, e argumento é o que se passa para ela. Então:

funcao func(param1, param2) 
{
    // param1 e param2 são parâmetros de func
}

// ...

func(1, 2); // 1 e 2 são argumentos passados para func


  • 0

#6 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 12 dezembro 2011 - 09:04

Olá!

Faz-se passagem por referência em C++ usando o operador & nos parâmetros.

Exemplo:

#include <iostream>

void sum10( int &value )
{
    value += 10;
}

int main( void )
{
    int valorTeste = 0;

    std::cout << "O valorTeste antes da chamada à sum10() é: " << valorTeste << std::endl;
    sum10(valorTeste);

    std::cout << "O valorTeste após a chamada à sum10() é: " << valorTeste << std::endl;

    return 0;
}

O output será:

O valorTeste antes da chamada à sum10() é: 0
O valorTeste após a chamada à sum10() é: 10


Se, por acaso, usássemos C, teríamos que passar um ponteiro da variável e incrementar o ponteiro:

#include <stdio.h>

void sum10( int *value )
{
    *value += 10;
}

int main( void )
{
    int valor_teste = 0;

    printf("O valorTeste antes da chamada à sum10() é: %d\n", valor_teste);
    sum10(&valor_teste);

    printf("O valorTeste após a chamada à sum10() é: %d\n", valor_teste);

    return 0;
}

O output será o mesmo.

Lembrando que o primeiro exemplo só funciona em C++, enquanto o segundo funciona em C e C++. O segundo modo é mais um "hack" do que uma solução verdadeira. Por isso, e como você quer passagem por referência em C++, imagino que você esteje à procura do primeiro modo.


Abraços :D
  • 0

#7 Leonardo Peixoto

Leonardo Peixoto
  • Membros
  • 80 posts

Postado 12 dezembro 2011 - 18:30

O código acima está errado.

O que, especificamente, você não entendeu sobre o conceito de 'parâmetro'?

Tudo kkkk
  • 0

#8 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 12 dezembro 2011 - 21:04

Ahnn, eu expliquei no meu último post... Você leu os outros comentários?


Abraços :D
  • 0

#9 Leonardo Peixoto

Leonardo Peixoto
  • Membros
  • 80 posts

Postado 13 dezembro 2011 - 18:05

Ahnn, eu expliquei no meu último post... Você leu os outros comentários?


Abraços :D

Li sim Renato brigadão pela explicação vai me ajudar bastante, embora não seja específico ao meu problema.


Mas Vlw mesmo !
  • 0

#10 guidjos

guidjos
  • Moderadores
  • 583 posts

Postado 13 dezembro 2011 - 23:33

Também sugiro que leia isto: http://guipn.com/cpa.htm
  • 0