fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main() {
  6. int PORTAS[] = {0, 0, 0}; // 0 - a porta contém uma cabra; 1 - a porta contém o carro
  7. int ESTAT[] = {0, 0, 0}; // {Tentativas, vitórias, derrotas}
  8. int repeticoes;
  9. int DECISAO;
  10. printf("1 para trocar todas, 0 para manter todas: ");
  11. scanf ("%d", &DECISAO);
  12. printf ("Digite o número de repetições: "); // Recomendável 10, 100 ou 1000.
  13. scanf ("%d", &repeticoes);
  14. int NUM = repeticoes;
  15. do {
  16. int AUX;
  17. int CAR = rand () %3; // Randomiza a porta que recebe o carro.
  18. PORTAS[CAR] = 1;
  19. int ESC = rand () %3; // Randomiza a escolha da porta.
  20. if (DECISAO == 1) { // Se foi escolhido trocar todas as vezes.
  21. if (PORTAS[ESC] == 1 ) { // Porta escolhida contém o carro.
  22. for (AUX = 0; AUX < 3 ; AUX++) {
  23. if (PORTAS[AUX] != 1 && AUX != ESC) {
  24. ESC = AUX; //Mudança de porta
  25. AUX = 3; // Para quebrar o 'For'
  26. ESTAT[2] += 1;
  27. }
  28. }
  29. }
  30. if (PORTAS[ESC] == 0) { //Porta escolhida contém uma cabra.
  31. ESC = CAR; // Pois sendo a porta errada, e tendo a outra errada sido revelada, só sobrou a correta.
  32. ESTAT[1] += 1;
  33. }
  34. }
  35. if (DECISAO == 0) { //Caso tenha sido escolhido manter todas as vezes.
  36. if (ESC == CAR ) ESTAT[1] += 1;
  37. else ESTAT[2] += 1;
  38. }
  39. NUM--;
  40. ESTAT[0] += 1;
  41. } while (NUM > 0);
  42. float VIT = (ESTAT[2] / repeticoes) * 100; // Porcentagem de vitórias *ERRO*
  43. float DER = (ESTAT[3] / repeticoes) * 100; // Porcentagem de derrotas *ERRO*
  44. (DECISAO == 1) ? printf("\n\n\n\tTrocando de porta todas as vezes: \n\n") : printf("\n\n\n\tMantendo a porta todas as vezes: \n\n");
  45. printf("Número de tentativas: %d\n", ESTAT[0]);
  46. printf("Número de vitórias: %d, %f%% do total.\n", ESTAT[1], VIT);
  47. printf("Número de derrotas: %d, %f%% do total.", ESTAT[2], DER);
  48. }
  49.  
  50. //https://pt.stackoverflow.com/q/100177/101
Success #stdin #stdout 0s 4404KB
stdin
1
1000
stdout
1 para trocar todas, 0 para manter todas: Digite o número de repetições: 


	Trocando de porta todas as vezes: 

Número de tentativas: 1000
Número de vitórias: 2, 0.000000% do total.
Número de derrotas: 2, -88762896.000000% do total.