Advertisement
Guest User

Ex4

a guest
Oct 31st, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. public class CalCombinatorio {
  2.  
  3. /**
  4. * Calcular o factorial de um número
  5. *
  6. *
  7. * @param num número inteiro não negativo
  8. * @return o valor do factorial do num
  9. */
  10. private static long factorial(long num) {
  11. long fact = 1;
  12. for (long i = num; i > 1; i = i - 1) {
  13. fact = fact * i;
  14. }
  15. return fact;
  16. }
  17.  
  18. /**
  19. * Calcula o combinações de n p a p
  20. *
  21. *
  22. * @param n número inteiro não negativo
  23. * @param p número inteiro não negativo
  24. * @return o valor combinações de n p a p ou -1 caso n<p
  25. */
  26. public static long combinacoes(long n, long p) {
  27. if (n < p) {
  28. return -1;
  29. }
  30. return factorial(n) / (factorial(p) * factorial(n - p));
  31. }
  32.  
  33. /**
  34. * Calcula o arranjos de n p a p
  35. *
  36. *
  37. * @param n número inteiro não negativo
  38. * @param p número inteiro não negativo
  39. * @return o valor arranjos com n elementos distintos, agrupados p a p ou -1
  40. * caso n<p
  41. */
  42. public static long arranjos(long n, long p) {
  43. if (n < p) {
  44. return -1;
  45. }
  46. return factorial(n) / (factorial(n - p));
  47. }
  48.  
  49. /**
  50. * Calcula o numero de permutações de num
  51. *
  52. * @param num número inteiro não negativo
  53. * @return o num de permutações de num
  54. */
  55. public static long permutacoes(long num) {
  56. return factorial(num);
  57. }
  58.  
  59. }
  60.  
  61.  
  62. import java.util.Formatter;
  63. import java.util.Scanner;
  64.  
  65. /**
  66. *
  67. * @author Tiago
  68. */
  69. public class TesteCalcCombinatorio {
  70.  
  71. public static void main(String[] args) {
  72. // TODO code application logic here
  73.  
  74. long n1, n2, res;
  75. Formatter obj1 = new Formatter(System.out);
  76. Scanner obj2 = new Scanner(System.in);
  77.  
  78. //leitura dos valores
  79. do {
  80. obj1.format("%s%n", "Escreva n");
  81. n1 = obj2.nextLong();
  82. obj1.format("%s%n", "Escreva p");
  83. n2 = obj2.nextLong();
  84. } while (n2 < 0 || n1 < 0);
  85.  
  86. res = CalCombinatorio.permutacoes(n1);
  87. obj1.format("%s%d%n", "O numero de permutacoes de "+n1+" e': ", res);
  88. obj1.format("%n");
  89. res = CalCombinatorio.permutacoes(n2);
  90. obj1.format("%s%d%n", "O numero de permutacoes de "+n2+" e': ", res);
  91. obj1.format("%n");
  92. res = CalCombinatorio.combinacoes(n1, n2);
  93. if (res != -1) {
  94. obj1.format("%s%d%n", "Nº de combinacoes = ", res);
  95. } else {
  96. obj1.format("ERRO!");
  97. }
  98. obj1.format("%n");
  99. res = CalCombinatorio.arranjos(n1, n2);
  100. if (res != -1) {
  101. obj1.format("%s%d%n", "Nº de arranjos = ", res);
  102. } else {
  103. obj1.format("ERRO!");
  104. }
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement