Ir ao conteúdo

Posts recomendados

Postado

Alguém pode dar uma ajuda em relação a esse código? É o seguinte, pode parecer bem simples mas não estou conseguindo fazer o final.

Isso é uma variação sem repetição. No caso seria a fórmula n!/(n-k)!

Vou deixar até que ponto eu fiz o programa:

 

#include<iostream>

using namespace std;

int main()

{
int k, n;
int fatorial = 1, fat = 1;

cout << "Arranjo Simples\n" << endl;
cout << "De um valor para n: \n";
cin >> n;
cout << "De um valor para k: \n";
cin >> k;
for(int i = n; i > 0; i--)
    {
        fatorial = fatorial * i;
    }
    cout << "O resultado de n e: \n" << fatorial << endl;


    //A partir daqui já tentei substituir várias coisas, mas não dão o resultado que deveria.
    for(int a = k; a > 0 ; a--)
        {
            fat = fat
        }
        cout << "O resultado para k: \n" << fat <<endl;



return 0;

}

 

Valeu pela ajuda!

Postado

No segundo for a variável inteira "a" deveria receber "(n-k)" inicialmente, pois o que você quer calcular é o fatorial (n-k)!. Ficando assim:

 

int fat = 1;
for (int a = n-k; a > 0; a--){
    fat = fat * a;
}

 

 

No entanto tem uma maneira mais direta de calcular o arranjo:

 

n! pode ser expandida assim:

n! = n * (n-1) * (n-2) * ... * (n-k+1) * (n-k)!

Logo:

n! / (n-k)! = [  n * (n-1) * (n-2) * ... * (n-k+1) * (n-k)! ] / (n-k)!
n! / (n-k)! = n * (n-1) * (n-2) * ... * (n-k+1)

Então você só precisa fazer:

 

arranjo = 1;
for(int i = n; i > n-k; i--)
{
    arranjo = arranjo * i;
}

 

Visitante
Este tópico está impedido de receber 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...