Ir para conteúdo
Fórum Script Brasil
  • 0

Retorno de uma função à main


Progc++

Pergunta

Olá a todos,

Evoluí para estudo e de funções e estou achando muito interessante, eis o problema...

"Faça uma sub-rotina que receba como parâmetro uma matriz[3][3] e retorne a soma dos seus elementos."

Quando o resultado sai na main em vez de sair como esperado sai um outro numero e muito grande (ex: deveria ser 175, mas sai 47852...).

Detalhe: O resultado sai correto dentro do sub-algoritmo, mas não na main, como descrito.

O que interessa na main...

int funcao(int mat[][3],int soma_res)  //protótipo da função
int main()
{...
  funcao(matriz,soma)    //variáveis da main; são inteiros.
  printf("\n\n\nO resultado da soma entre os elementos da matriz: %d",soma);

   return EXIT_SUCCESS;
}
A função...
int funcao(int mat[][3],int soma_res)
   {
       int i,j;
       soma_res=0;
       for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
        {
            soma_res+=mat[i][j];
        }
       }       

     return soma_res;  
   }

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Olá a todos,

Evoluí para estudo e de funções e estou achando muito interessante, eis o problema...

"Faça uma sub-rotina que receba como parâmetro uma matriz[3][3] e retorne a soma dos seus elementos."

Quando o resultado sai na main em vez de sair como esperado sai um outro numero e muito grande (ex: deveria ser 175, mas sai 47852...).

Detalhe: O resultado sai correto dentro do sub-algoritmo, mas não na main, como descrito.

O que interessa na main...

int funcao(int mat[][3],int soma_res)  //protótipo da função
int main()
{...
  funcao(matriz,soma)    //variáveis da main; são inteiros.
  printf("\n\n\nO resultado da soma entre os elementos da matriz: %d",soma);

   return EXIT_SUCCESS;
}
A função...
int funcao(int mat[][3],int soma_res)
   {
       int i,j;
       soma_res=0;
       for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
        {
            soma_res+=mat[i][j];
        }
       }       

     return soma_res;  
   }
você tem que estudar sobre parametros de uma função. Acho que esse é o seu erro, você fez um função que recebesse como parametro um vetor[][3] e um int. o parametro soma_res é passado por cópia ou seja NÃO ALTERA O VALOR DA VARIAVEL PASSADA só dentro da função. aí você usou a variavel depois fora da função em main e quando você imprimiu o printf mostrou o valor da variável soma que era um valor que o compilador dá a variável se ela não for iniciada. Existe duas maneiras para se fazer.
int funcao(int mat[][3])
   {
       int i,j;
       int soma_res=0;
       for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
        {
            soma_res+=mat[i][j];
        }
       }       

     return soma_res;  
   }
e para chamar sua função no main() você faz assim...
soma = funcao(matriz);//ou seja sua variavel soma vai ser atribuida com o valor que a função retornar;
Ou dessa maneira, um pouco mais avançada.
VOID funcao(int mat[][3], *int soma_res)
   {
       int i,j;
       soma_res=0;
       for(i=0;i<3;i++)
       {
        for(j=0;j<3;j++)
        {
            soma_res+=mat[i][j];
        }
       }         
   }
e chama-la assim
funcao(matriz, &soma);//Ai você pode altera-la o valor de soma dentro da sua funcao e fora tambem.

Editado por Dan Oliveira
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...