Определенное молодежное дворец представила партию робот -машин. Вы можете принять предварительные инструкции и следовать им. Основные движения автомобиля очень просты, есть только 3 типа: повернуть налево (записано как L), поверните направо (записано как R) и идите вперед на несколько сантиметров (записи напрямую).
Например, мы можем ввести следующую команду в автомобиль:
15L10R5LRR10R20
Затем машина сначала пойдет прямо на 15 см, поверните налево, затем пройдите 10 см, затем поверните направо, ...
Нетрудно понять, что для этой строки команды автомобиль вернулся к своей отправной точке.
Ваша задача: Напишите программу, инструкции ввода пользователем, и программа выводит прямое расстояние между позицией автомобиля после выполнения каждой инструкции и позиции автомобиля до выполнения инструкции.
[Требования к формату ввода и вывода]
Пользователь сначала входит в целое число n (n <100), указывая, что будут n инструкции.
Далее введите n инструкции. Каждая инструкция состоит только из L, R и чисел (числа составляют целые числа от 0 до 100)
Каждая инструкция имеет не более 256 символов в длину.
Программа выводит n линий результатов.
Каждый результат представляет прямую линию между передним и задним положениями каретки при выполнении соответствующей команды. Требуется округление до 2 десятичных знаков.
Например: пользовательский ввод:
5
L100R50R10
3lll5rr4l12
LL
100r
5L5L5L5
Затем программа выводит:
102,96
9.06
0,00
100.00
0,00
Код:
Импорт java.util.*; класс fushu {public Double Real; общественное двойное изображение; 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; возврат R; } public fushu dot (double r, double i) {fushu t = new fushu (); T.Real = Real * R - Image * I; t.image = Real * i + Image * r; возврат t; }} класс робот {private int x = 0; private int y = 0; Частный 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; 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) бросает исключение {robot t = new Robot (); T.Walk ("3R4"); t.show (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.