Ir ao conteúdo
  • Cadastre-se

Ajuda com algoritmo


claude754

Posts recomendados

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??
Link para o comentário
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??

  

Link para o comentário
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!

Link para o comentário
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.

Link para o comentário
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...!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...