Análise combinatória

Publicado por Reginaldo de Matias 08/11/2006

[ Hits: 30.144 ]

Homepage: http://mundodacomputacaointegral.blogspot.com/

Download combinatoria.c




O presente script efetua os cálculos usados em análise combinatória, tais como: arranjos simples, combinação simples e permutação, e além disso faz uso da função recursiva para o cálculo do fatorial.

  



Esconder código-fonte

/*Este programa efetua os cálculos usados em análise combinatória.
   Arranjos Simples, Combinação Simples e Permutação.
   by Reginaldo de Matias - Ciência da Computação - UDESC
   Copyrigth - 2006
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
unsigned long Fatorial(unsigned long n);
int main()
{
    long n,p,aux;
    long A,C,P;
    char op;
    system("color 9e"); system("title Análise Combinatória");
    do{
    printf("Software que calcula Arranjo,Combinacao e Permutacao\n\n");
    do{
      printf("Entre com o valor de n: ");
      scanf("%li",&n);
      printf("\nEntre com o valor de p: ");
      scanf("%li",&p);
      if(n<p || p<0)
      printf("!!!ERRO!!! Dado incorreto!\nTente novamente!\n ");
      }while(n<p || p<0);
      aux = Fatorial(n);
      A = (aux/Fatorial(n-p));
      C = (Fatorial(n))/(Fatorial(p)*(Fatorial(n-p)));
      P = Fatorial(n);
      printf("Arranjo: A(%li,%li)= %li\n\n",n,p,A);
      printf("Combinacao: C(%li,%li) = %li\n\n",n,p,C);
      printf("Permutacao: P(%li) = %li\n\n",n,P);
      printf("\nNovo calculo (S)/(N): ");
      scanf("%s",&op);
  }while(op == 'S' || op == 's');    
      printf("Copyright - 2006\n");
      system("Pause");
}
unsigned long Fatorial(unsigned long n)
{
    if(n==0 || n==1)
    return 1;
    return n*Fatorial(n-1); 
}  

Scripts recomendados

Agenda de Contatos v1.0

Verificacao

Progressões Aritméticas e Geométricas (PA e PG)

Calcular pagamento com a menor quantidade de cédulas possível

Parte 7 - Sessão de estudo sobre VETORES


  

Comentários
[1] Comentário enviado por doradu em 01/02/2010 - 13:36h

bom programa

há como 'segurar' o cursor?

lembro q no Pascal (quando programava em 1995) existia um comando q não deixava o cursor pular, esperando a digitação (deve ter algo a mais no 'scanf'

[2] Comentário enviado por doradu em 01/02/2010 - 13:37h

pensava q o fatorial aparecia na tela

[3] Comentário enviado por Xinuo em 14/05/2015 - 00:31h

O programa exemplo não está tão bom otimizado, visto que o Fatorial(n) é calculado 2 vezes e a variável aux não serve para nada. O melhor seria fazer assim:

P = Fatorial( n );
A = ( P / Fatorial( n-p ) );
C = ( A / Fatorial( p ) );

Outras melhorias: eliminar a declaração da variável aux, mudar o tipo de P, A, C e da função Fatorial para unsigned long long.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts