Un certain palais des jeunes a introduit un lot de voitures de robot. Vous pouvez accepter des instructions pré-intentées et les suivre. Les mouvements de base d'une voiture sont très simples, il n'y a que 3 types: tourner à gauche (enregistré comme L), tourner à droite (enregistré comme R) et avancer de quelques centimètres (enregistrer directement).
Par exemple, nous pouvons saisir la commande suivante à la voiture:
15l10r5lrr10r20
Ensuite, la voiture ira d'abord directement pendant 15 cm, tournez à gauche, puis marchez 10 cm, puis tournera à droite, ...
Il n'est pas difficile de voir que pour cette chaîne de commande, la voiture est revenue à son point de départ.
Votre tâche est: rédiger un programme, les instructions d'entrée par l'utilisateur et le programme étend la distance de ligne droite entre la position de la voiture après l'exécution de chaque instruction et la position de la voiture avant l'exécution de l'instruction.
[Exigences de format d'entrée et de sortie]
L'utilisateur entre d'abord dans un entier n (n <100), indiquant qu'il y aura NIRS NEUX.
Entrez ensuite n instructions. Chaque instruction se compose uniquement de L, R et les nombres (les nombres sont des entiers entre 0 et 100)
Chaque instruction n'a pas plus de 256 caractères.
Le programme produit N lignes de résultats.
Chaque résultat représente la distance de ligne droite entre les positions avant et arrière du chariot lors de l'exécution de la commande correspondante. Nécessite d'arrondi à 2 décimales.
Par exemple: entrée utilisateur:
5
L100R50R10
3lll5rr4l12
Ll
100r
5l5l5
Ensuite, le programme sort:
102.96
9.06
0,00
100,00
0,00
Code:
import java.util. *; classe Fushu {public double réel; Double image publique; public fushu () {real = 0; image = 0; } public fushu (double r, double i) {real = r; image = i; } public fushu dot (fushu x) {fushu r = new fushu (); R.Real = Real * x.real - Image * x.image; R.Image = Real * x.image + image * x.real; retour R; } public fushu dot (double r, double i) {fushu t = new fushu (); t.real = réel * r - image * i; t.image = réel * i + image * r; retour t; }} classe robot {private int x = 0; privé int y = 0; private fushu dir = nouveau fushu (1,0); public void walk (String S) {int sum = 0; pour (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; sum = 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) lève une exception {robot t = new robot (); T.Walk ("3R4"); t.show (); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.