Programming

T02-007- 04- R3 Estructuras Repetitivas: while - Reto

Enunciado

Radares de tramo

La Dirección Particular de Tráfico (DPT) está empeñada en hacer que los conductores respeten los límites de velocidad. Sin entrar en si es por razones de seguridad, por ahorrar combustible, o con un mero afán recaudatorio, ahora sabemos que además de los radares fijos tradicionales, están poniendo en funcionamiento los radares de tramo.

Los radares de tramo consisten en colocar dos cámaras en dos puntos alejados de una carretera para poder comprobar cuánto tiempo ha tardado el coche en recorrer ese tramo. Si la velocidad media supera la velocidad máxima permitida, podremos saber (aunque no le hayamos visto) que en algún punto del trayecto ha superado esa velocidad. Por ejemplo, si colocamos las cámaras separadas 10Km en un tramo cuya velocidad está limitada a 110Km/h, y un coche tarda 5 minutos en ser visto por la segunda cámara, sabremos que su velocidad media ha sido de 120Km/h, y por tanto en algún sitio ha superado el límite de velocidad aunque al pasar por debajo de las dos cámaras el coche fuera a 80Km/h.

Aplicación

Es importante que, para que tus compañeros/as puedan probar la aplicación, que generes la aplicación con las siguientes características:

  • Categoría: Java with Ant
    • Projecto: Java Application
  • Nombre del Proyecto: Radar

Entrada

Cada caso de prueba consistirá en leer del teclado tres números: el primero será la distancia (en metros) que separan las dos cámaras, el segundo indicará la velocidad máxima permitida en todo ese tramo (en Km/h) y el tercer y último número indicará el número de segundos que ha tardado un coche en recorrer el tramo. Todos esos números serán enteros.

La aplicación finalizará cuando los 3 valores introducidos sean 0.

Salida

Para cada caso de prueba, el programa generará una línea, indicando si el coche debe ser multado o no. En concreto, indicará "OK" si el coche no superó la velocidad máxima, indicará "MULTA" si se superó esa velocidad máxima permitida.

En el caso de que el resultado sea "MULTA", se mostrará también los puntos que se le retirarán del carnet, según las decenas de kilómetros que haya superado la media:

  • 0 decenas de kilómetros de media superados: 0 puntos
  • 1 decena de kilómetros superados: 2 puntos
  • 2 decenas de kilómetros superados: 4 puntos
  • 3 decenas de kilómetros superados: 7 puntos
  • de 4 decenas de kilómetros superados en adelante: 10 puntos

 

Solución


											
package radar; import java.util.Scanner; public class Radar { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int dist; int v_max; int time; int pts; float v_real; int exceso; String texto = ""; dist = sc.nextInt(); v_max = sc.nextInt(); time = sc.nextInt(); while (dist != 0 && v_max != 0 && time != 0) { v_real = (float) (dist * 3.6 / time); exceso = (int) ((v_real - v_max) / 10); if (exceso >= 0 && v_real > v_max) { switch (exceso) { case 0: pts = 0; texto = "MULTA - " + pts + " puntos"; break; case 1: pts = 2; texto = "MULTA - " + pts + " puntos"; break; case 2: pts = 4; texto = "MULTA - " + pts + " puntos"; break; case 3: pts = 7; texto = "MULTA - " + pts + " puntos"; break; default: pts = 10; texto = "MULTA - " + pts + " puntos"; } } else { texto = "OK"; } System.out.println(texto); dist = sc.nextInt(); v_max = sc.nextInt(); time = sc.nextInt(); } } }

Input

9165 110 300 9165 110 299 9165 110 270 9165 110 250 9165 110 230 9165 110 219 0 0 0
4500 60 230 4500 60 179 4500 60 300 4500 60 269 4500 60 160 4500 60 200 0 0 0

Output

OK MULTA - 0 puntos MULTA - 2 puntos MULTA - 4 puntos MULTA - 7 puntos MULTA - 10 puntos
MULTA - 2 puntos MULTA - 7 puntos OK MULTA - 0 puntos MULTA - 10 puntos MULTA - 4 puntos