Probabilidades
Enviado por guaton58 • 12 de Mayo de 2012 • 1.715 Palabras (7 Páginas) • 383 Visitas
PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
ESCUELA DE INGENIERÍA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACIÓN
Introducción a la Programación - IIC1102
Interrogación 2
Fecha 19 de Abril 2005
Pregunta 1
Queremos escribir un programa que simule el juego de la ruleta en un casino. En este caso, se trata de una ruleta simplificada, que sólo tiene los números 1, 2, …, 12. Para apostar, un jugador primero especifica el monto de la apuesta, luego elige uno de los números, y finalmente elige el tipo de apuesta. Hay cuatro tipos de apuestas —pleno, paridad, fila y columna— con los siguientes significados:
− Pleno: El jugador gana sólo si la bolita de la ruleta cae exactamente en el número elegido, y gana 12 veces el monto apostado.
− Paridad: El jugador gana si la bolita cae en cualquier número con la misma paridad (par o impar) que el número elegido, y gana 2 veces el monto apostado.
− Fila: El jugador gana si la bolita cae en cualquier número que está en la misma fila que el número elegido, y gana 4 veces el monto apostado. La fila 0 tiene los números 1, 2 y 3; la 1, los números 4, 5 y 6; la 2, los números 7, 8 y 9; y la 3, los números 10, 11 y 12.
− Columna: El jugador gana si la bolita cae en cualquier número que está en la misma columna que el número elegido, y gana 3 veces el monto apostado. La columna 0 tiene los números 3, 6, 9 y 12; la columna 1, los números 1, 4, 7 y 10; y la 2, los números 2, 5, 8 y 11.
En todos los casos, si el jugador no gana, entonces pierde el dinero apostado.
El método main que se adjunta simula la interacción entre el funcionario del casino encargado de la ruleta y un jugador (usuario del programa). El main primero crea un objeto de la clase Ruleta y un objeto de la clase Jugador. Este último es creado con un saldo inicial de dinero para apostar de 100 y su propósito es representar la información del jugador relevante para el juego. La interacción consiste en repetir los siguientes pasos: primero, se le pide al jugador que haga su apuesta; luego, se lanza la bolita; y, finalmente, se determina cómo le fue al jugador. Esta interacción se repite mientras el saldo del jugador esté entre 1 y 999.
Escriba las clases Ruleta y Jugador, con los atributos y métodos sugeridos.
public static void main(String[] args)
{
Ruleta ruleta = new Ruleta();
Jugador jugador = new Jugador(100);
int saldo, monto, numero, tipo, premio;
saldo = jugador.obtenerSaldo();
while (0 < saldo && saldo < 1000) {
monto = Interfaz.PedirEntero("Monto apostado: ");
numero = Interfaz.PedirEntero("Elija casilla: ");
tipo = Interfaz.PedirEntero(
"Tipo de apuesta:\n"+
" Pleno = 1\n"+
" Paridad = 2\n"+
" Columna = 3\n"+
" Fila = 4");
jugador.definirApuesta(monto, numero, tipo);
ruleta.lanzarBolita();
ruleta.anunciarResultado();
monto = jugador.obtenerMonto();
numero = jugador.obtenerNumero();
tipo = jugador.obtenerTipo();
premio = ruleta.calcularPremio(monto, numero, tipo);
jugador.actualizarSaldo(premio);
saldo = jugador.obtenerSaldo();
}
}
Solución y pauta
– clase Ruleta: 3 pts.,
– atributos numero: 0.5 pts.
– método lanzarBolita: 0.5 pts.
– método anunciarResultado: 0.5 pts.
– método calcularPremio: 1.5 pts.
– clase Jugador: 3 pts.;
– método constructor: 0.5 pts.
– método definirApuesta: 0.5 pts.
– método actualizarSaldo: 0.5 pts.
– atributos saldo, monto, numero y tipo: 0.5 pts. en total (aprox. 0.1 pt./atributo)
– métodos obtenerSaldo, obtenerMonto, obtenerNumero y obtenerTipo: 1 pt. en total (0.25 pts./metodo)
public class Ruleta
{
private int numero;
public void lanzarBolita() {
numero = random(1, 12);
}
public void anunciarResultado() {
Interfaz.MostrarMensaje(
“La bolita cayo en: ”+numero);
}
public int calcularPremio(int mt; int num; int tp) {
int premio;
if (tp == 1) {
if (num == numero) premio = 12*mt;
else premio = -mt;
}
if (tp == 2) {
if (num%2 == numero%2) premio = 2*mt;
else premio = -mt;
}
if (tp == 3) {
if (num%3 == numero%3) premio = 3*mt;
else premio = -mt;
}
if (tp == 4) {
if ((num-1)/3 == (numero-1)/3)
premio = 4*mt;
else premio = -mt;
}
return premio;
}
}
public class Jugador {
private int saldo, monto, numero, tipo;
public Jugador(int saldoInicial) {
saldo = saldoInicial;
}
public int obtenerSaldo() {
return saldo;
}
public void definirApuesta(int mt, int num, int tp) {
monto = mt;
numero = num;
tipo = tp;
}
public int obtenerMonto() {
return monto;
}
public int obtenerNumero() {
return numero;
}
public int obtenerTipo() {
return tipo;
}
public void actualizarSaldo(int premio) {
saldo = saldo + premio;
}
}
Pregunta 2
En el siguiente listado se encuentran 18 líneas con errores, identifique todos los errores y haga una lista indicando el número de la línea donde se produce el error así como la versión correcta (corrija el error).
0
1 public class Farmacia {
2 public void main()
3 { TarjetaPuntos tp1;
4 TarjetaPuntos tp2;
5 TarjetaTemporal tpt= tp1;
6
7 tp1 = new TarjetaPuntos();
8 tp1.valor = 10;
9 tp1.addPuntos(100);
10
11 tp2 = new TarjetaPuntos();
12 tp2.valor = 10;
13 tp2.addPuntos(350);
14
15 nro=Interfaz.PedirEntero("Ingrese # de cliente (1)tp1 (2)tp2");
16 costo=Interfaz.PedirEntero("Ingrese monto de compra");
17
18 TarjetaPuntos cliente;
19 if (nro=1) cliente = tp1;
20 else if (nro=2) cliente = tp2;
21 else { Interfaz.MostrarMensaje(Cliente
...