Un cierto palacio juvenil presentó un lote de autos robots. Puede aceptar instrucciones previas a la entrada y seguirlas. Los movimientos básicos de un automóvil son muy simples, solo hay 3 tipos: girar a la izquierda (registrado como L), girar a la derecha (registrado como R) y caminar hacia adelante unos pocos centímetros (registro directamente).
Por ejemplo, podemos ingresar el siguiente comando al automóvil:
15L10R5LRR10R20
Luego, el auto primero irá directamente durante 15 cm, girará a la izquierda, luego caminará 10 cm, luego gire a la derecha, ...
No es difícil ver que para esta cadena de comando, el automóvil volvió a su punto de partida.
Su tarea es: escribir un programa, instrucciones de entrada por parte del usuario y el programa genera la distancia de línea recta entre la posición del automóvil después de ejecutar cada instrucción y la posición del automóvil antes de ejecutar la instrucción.
[Requisitos de formato de entrada y salida]
El usuario primero ingresa a un entero n (n <100), lo que indica que habrá n instrucciones a continuación.
A continuación, ingrese n instrucciones. Cada instrucción consta de solo L, R y números (los números son enteros entre 0 y 100)
Cada instrucción no tiene más de 256 caracteres de longitud.
El programa genera n líneas de resultados.
Cada resultado representa la distancia de línea recta entre las posiciones delantera y trasera del carro al ejecutar el comando correspondiente. Requiere redondeo a 2 decimales.
Por ejemplo: entrada del usuario:
5
L100R50R10
3LLL5RR4L12
LL
100R
5L5L5L5
Entonces el programa sale:
102.96
9.06
0.00
100.00
0.00
Código:
import java.util.*; Clase Fushu {public Double Real; Imagen doble pública; public fushu () {real = 0; imagen = 0; } public fushu (doble r, doble i) {real = r; imagen = i; } public fushu dot (fushu x) {fushu r = new Fushu (); R.Real = Real * X.Real - Imagen * X.Image; R.Image = Real * X.Image + Image * X.Real; regresar r; } public fushu dot (doble r, doble i) {fushu t = new fushu (); t.Real = real * r - imagen * i; t.image = real * i + imagen * r; regresar t; }} Robot de clase {private int x = 0; private int y = 0; privado fushu dir = new Fushu (1,0); public void walk (string s) {int sum = 0; for (int i = 0; i <s.length (); i ++) {char c = s.charat (i); if (c == 'l' || c == 'r') {x += sum * dir.real; y += sum * dir.image; suma = 0; if (c == 'l') dir = dir.dot (0,1); else dir = dir.dot (0, -1); } else sum = sum * 10 + (c-'0 '); } x += sum * dir.real; y += sum * dir.image; } public void show () {double d = math.sqrt (x*x + y*y); System.out.println (x + "," + y + "dir:" + dir.real + "," + dir.image + ", d =" + d); }} Public Class Walk {public static void main (string [] args) arroja excepción {robot t = new Robot (); T.Walk ("3R4"); t.show (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.