lunes, 17 de noviembre de 2014

UVA 11715 - Car (coche)

Estás en un coche y vas a la velocidad u m/s. Tu aceleración a es constante. Tras un tiempo particular t, tu velocidad será v m/s y tu desplazamiento es s. Ahora se te dan algunos (no todos) los valores para dichas variables. Tienes que encontrar los parámetros perdidos.

Entrada/Input
El fichero de entrada puede contener múltiples casos de prueba. Cada caso puede ser uno de los siguientes:

1 u v t
2 u v a
3 u a s
4 v a s

La entrada terminará con un simple 0.

Salida/Output
Para cada caso de tu entrada tienes que imprimir una línea que contenga el número de caso y:


Si es 1 u v t se te darán y deberás imprimir  s y a
Si es 2 u v a se te darán y deberás imprimir  s y t
Si es 3 u a s se te darán y deberás imprimir  v y t
Si es 4 v a s se te darán y deberás imprimir  u y t

Comprueba los ejemplos para mas detalles. Puedes asumir que los casos dados no te conducirán a una situación no válida. Usa 'double' para todos los cálculos y la salida de todos los números con tres decimales.

Sample Input
Output for Sample Input
1 10 5 2.0
1 5 10.0 2
2 10 11 2
3 5 1 6
4 5.0 -1 6
0
Case 1: 15.000 -2.500
Case 2: 15.000 2.500
Case 3: 5.250 0.500
Case 4: 6.083 1.083
Case 5: 6.083 1.083

Problem Setter: Jane Alam Jan
Special Thanks: Md. Shiplu Hawlader





package car.pkg11715;
import java.util.Locale;
import java.util.Locale;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Car11715 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in).useLocale(Locale.US);
        //Locale localus = new Locale("en","UK","WIN");
        Locale.setDefault(Locale.US);
        int caso,cont=1;
        double u,v,t,a,s;
       
        do {
            caso= leer.nextInt();
          
            switch (caso) {
                case 1:
                    u= leer.nextDouble();
                    v= leer.nextDouble();
                    t= leer.nextDouble();
                    //s y a
                    a= (v-u)/t;
                    s = u*t+(a*t*t)/2;
                    System.out.printf("Case %d: %.3f %.3f%n",cont,s,a);
                    break;
                case 2:
                    u= leer.nextDouble();
                    v= leer.nextDouble();
                    a= leer.nextDouble();
                    t=(v-u)/a;
                    s = u*t+(a*t*t)/2;
                    System.out.printf("Case %d: %.3f %.3f%n",cont,s,t);
                    //sy t
                    break;
                case 3:
                    u= leer.nextDouble();
                    a= leer.nextDouble();
                    s= leer.nextDouble();
                    //v y t
                    v= Math.sqrt((u*u)+2*a*s);
                    t=(v-u)/a;
                   
                    System.out.printf("Case %d: %.3f %.3f%n",cont,v,t);
                    break;
                case 4:
                    v= leer.nextDouble();
                    a= leer.nextDouble();
                    s= leer.nextDouble();
                    // u y t
                    u=Math.sqrt((v*v)-2*a*s);
                    t= (v-u)/a;
                    System.out.printf("Case %d: %.3f %.3f%n",cont,v,t);
                    break;
               
            }
            ++cont;
        } while (caso!=0);
       
       
   
    }
   
}