domingo, 23 de octubre de 2011

Deitel_Java_7.17 ( Lanzamiento de Dados )

El programa simula el lanzamiento de dos dados.
7.17 (Tiro de dados) Escriba una aplicación para simular el tiro de dos dados. La aplicación debe utilizar un objeto de la clase Random una vez para tirar el primer dado, y de nuevo para tirar el segundo dado. Después debe calcularse la suma de los dos valores. Cada dado puede mostrar un valor entero del 1 al 6, por lo que la suma de los valores variará del 2 al 12, siendo 7 la suma más frecuente, mientras que 2 y 12 serán las sumas menos frecuentes. Su aplicación debe tirar los dados 36 000 veces. Utilice un arreglo unidimensional para registrar el número de veces que aparezca cada una de las posibles sumas. Muestre los resultados en forma tabular. Determine si los totales son razonables (es decir, hay seis formas de tirar un siete, por lo que aproximadamente una sexta parte de los tiros deben ser 7)
Solución:
Este código debe llamarse UsaDeitel_7_17
public class UsaDeitel_7_17
 {  // Abre clase UsaDeitel_7_17
 public static void main(String args[])
 {  // Abre main
 Deitel_7_17 miObjeto = new Deitel_7_17();
  
 System.out.println("\nEste programa simula el lanzamiento de dos dados.\n");
 miObjeto.Recibir();

 }  // Cierra main
 
 }  // Cierra UsaDeitel_7_17

Este código debe guardarse como Deitel_7_17.java

import java.util.Scanner;
 import java.util.Random;
 
 public class Deitel_7_17
 {  // Abre clase Deitel_7_17

 Scanner entrada = new Scanner(System.in);
 Random aleatorio = new Random();
 private int numero;
 int Arreglo[];
 
 /////////////////////////////////////////////
 // Metodo Recibir 
 /////////////////////////////////////////////
 
 public void Recibir()
 {  // Abre metodo Recibir
 System.out.print("\nPor favor introduzca el numero de veces que se lanzaran ");
 System.out.print(" los dados\n");
 numero = entrada.nextInt();
 Arreglo = new int[numero];
 Lanzar();
 }  // cierra metodo Recibir


 /////////////////////////////////////////////
 // Metodo Lanzar
 /////////////////////////////////////////////

 public void Lanzar()
 {  // Abre metodo Lanzar
 int numero1;
 int numero2;
 
 for ( int i = 0; i < Arreglo.length; i++ )
 {      // Abre for
 numero1 = 1 + aleatorio.nextInt(6); 
 numero2 = 1 + aleatorio.nextInt(6);
 // System.out.printf("\n%d\t%d\n", numero1, numero2);
 // Descomentar para verificar que las sumas se capturan
 // de manera correcta. Para esto intruducir un numero
 // pequenio
 Arreglo[i] = numero1 + numero2; 
 }      // Cierra for 

 Contar();
 }  // Cierra metodo Lanzar

 /////////////////////////////////////////////
 // Metodo Contar
 /////////////////////////////////////////////

 public void Contar()
 {     // Abre metodo Contar
 int Contador[] = new int[13];
 
 for ( int j = 0; j < Arreglo.length; j++ )
 {  // Abre for
 for ( int k = 0; k < Contador.length; k++ )
 {      // Abre for anidado 
 if ( Arreglo[j] == k )
 Contador[k]++;
 }  // Cierra for anidado
 }  // Cierra for

 Imprimir(Contador); 

 }     // Cierra metodo Contar

 /////////////////////////////////////////////
 // Metodo Imprimir 
 /////////////////////////////////////////////

 public void Imprimir( int B[])
 { // Abre metodo Imprimir
 for (int m = 0; m < B.length; m++ )
 {       // Abre for
 System.out.printf("\n%d lanzamientos sumaron %d\n", B[m], m ); 
 }       // Cierra for
 }  // Cierra metodo Imprimir

 }  // Cierra clase Deitel_7_17

10 comentarios:

  1. Creo que registrar los 36000 valores en un arreglo no es necesario en absoluto. Es más aunque tuviera algún sentido se está haciendo prácticamente lo mismo dos veces, al recorrer el Arreglo en Contar().

    ResponderEliminar
  2. Supongo que fue la idea de hacer métodos que hacen una tarea específica lo que me hizo escribirlo así. Tienes toda la razón. Es redundante. Se puede meter fácilmente el método Contar en el método Lanzar.
    Saludos.

    ResponderEliminar
  3. Excelente, full Java maestro.

    ResponderEliminar
  4. Buen programa, una pregunta, como sería presentarlo en forma de tabla?, gracias

    ResponderEliminar
  5. Aquí en video: https://www.youtube.com/watch?v=PNw0_mCQVFI

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...