Ir ao conteúdo
  • Cadastre-se
claude754

RESOLVIDO Ajuda com algoritmo

Recommended Posts

Olá, estou com o problema em um algorítimo que é o seguinte:

FUAQ lê valores para uma matriz M[4,5].
Inserir o fatorial dos valores da matriz num vetor V[20].
O cálculo do fatorial deve ser realizado numa função.
Declarar apenas variáveis locais.

mas não estou conseguindo passar os valores da matriz para função e retornar os dois valores...

O meu algoritmo está incompleto, mas é +- assim:

#include <iostream>using namespace std;float fat(int x, int y){ if(x==0 || x==1) return 1; else          return (x * fat(x-1));}int main(void){    int l, c, x, cont, i=0, n;    int M[4][5];    int V[20];//------Ler Valores------------------------------------------------------------        for(l = 0 ; l < 4 ; l++)            for(c = 0 ; c < 5 ; c++)            {                cout<<"Digite Os Valores : ";                cin>> M[l][c];            }//-----------------------------------------------------------------------------//------Processamento--------------------------------------------------------------        cout<<endl<<endl;        cont=0;        for(l = 0 ; l < 4 ; l++)            for(c = 0 ; c < 5 ; c++)            {                V[cont] = M[l][c] * fat(l, c);                cont+=1;            }//-----------------------------------------------------------------------------//------Mostrar----------------------------------------------------------------        for( i = 0 ; i < 20 ; i++ )    {         cout<<"Os elementos do vetor é: "<<V[i]<<endl;    }//------------------------------------------------------------------------------}alguém pode me ajudar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 O problema que a funçao fat só usa um argumento. Você deve modificar a assinatura da função para:

 

float fat(int x)

 

no processamento você deve chamar fat dessa maneira:

 

V[cont] = fat( M[l][c] );

 

Além disso voce deve modificar o tipo do vetor V para float, já que a função fat retorna um float.

 

 

Olá, estou com o problema em um algorítimo que é o seguinte:

float fat(int x, int y){ if(x==0 || x==1) return 1; else          return (x * fat(x-1));}int main(void){    int l, c, x, cont, i=0, n;    int M[4][5];    int V[20];//------Ler Valores------------------------------------------------------------        for(l = 0 ; l < 4 ; l++)            for(c = 0 ; c < 5 ; c++)            {                cout<<"Digite Os Valores : ";                cin>> M[l][c];            }//-----------------------------------------------------------------------------//------Processamento--------------------------------------------------------------        cout<<endl<<endl;        cont=0;        for(l = 0 ; l < 4 ; l++)            for(c = 0 ; c < 5 ; c++)            {                V[cont] = M[l][c] * fat(l, c);                cont+=1;            }//-----------------------------------------------------------------------------//------Mostrar----------------------------------------------------------------        for( i = 0 ; i < 20 ; i++ )    {         cout<<"Os elementos do vetor é: "<<V[i]<<endl;    }//------------------------------------------------------------------------------}alguém pode me ajudar??

  

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então deve ser assim:

cout<<endl<<endl;        cont=0;        for(l = 0 ; l < 4 ; l++)            for(c = 0 ; c < 5 ; c++)            {                V[cont] = M[l][c] *  fat( M[l][c] );                cont+=1;            }

?

 

Mas e quanto a função como faço para a função fazer o fatorial da linha e da coluna da matriz

e depois retornar os dois valores para fazer a multiplicação com os valores no programa principal?

 

No momento ela ta assim:

float fat(int x, int y){ if(x==0 || x==1) return 1; else          return (x * fat(x-1));}

Mas irá fazer o fatorial só de um valor e retornar o mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é simples.

 

sua função fat não usa o y para nada. O que ela faz com o x é calcular o fatorial. 

 

a função fat fica assim:

float fat(int x){if(x==0 || x==1)return 1;elsereturn (x * fat(x-1));}

e na chamada fica assim:

cout<<endl<<endl;cont=0;for(l = 0 ; l < 4 ; l++)for(c = 0 ; c < 5 ; c++){V[cont] = fat( M[l][c] );cont+=1;}

Quando você acessa M[c] você está passando um inteiro, 

E a função fat retorna um float que corresponde ao fatorial desse inteiro.

 

no fim das contas você vai ter o vetor V preenchido com o fatorial da matriz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é simples.

 

sua função fat não usa o y para nada. O que ela faz com o x é calcular o fatorial. 

 

a função fat fica assim:

 

float fat(int x)

{

if(x==0 || x==1)

return 1;

else

return (x * fat(x-1));

}

 

e na chamada fica assim:

 

cout<<endl<<endl;

cont=0;

for(l = 0 ; l < 4 ; l++)

for(c = 0 ; c < 5 ; c++)

{

V[cont] = fat( M[l][c] );

cont+=1;

}

 

Quando você acessa M[c] você está passando um inteiro, 

E a função fat retorna um float que corresponde ao fatorial desse inteiro.

 

no fim das contas você vai ter o vetor V preenchido com o fatorial da matriz.

Entendi, eu tava com a logica errada pois o X na função irá receber o valor da linha e da coluna.

Eu pensei que precisaria de um( x ) para linha e outro ( y ) para coluna...

Obrigado mesmo pela ajuda... me esclareceu muito...!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×