قدم قصر شباب معين مجموعة من سيارات الروبوت. يمكنك قبول التعليمات المسبقة ومتابعتها. الحركات الأساسية للسيارة بسيطة للغاية ، لا يوجد سوى 3 أنواع: انعطف يسارًا (مسجلاً كـ L) ، وانعطف يمينًا (مسجلة باسم R) ، والمشي إلى الأمام بضع سنتيمترات (سجل مباشرة).
على سبيل المثال ، يمكننا إدخال الأمر التالي إلى السيارة:
15L10R5LRR10R20
بعد ذلك ، ستذهب السيارة أولاً إلى 15 سم ، ثم انعطف يسارًا ، ثم تمشي 10 سم ، ثم انعطف يمينًا ، ...
ليس من الصعب أن نرى أنه بالنسبة لسلسلة الأوامر هذه ، عادت السيارة إلى نقطة البداية.
مهمتك هي: اكتب برنامجًا ، وتعليمات الإدخال من قبل المستخدم ، ويقوم البرنامج بإخراج مسافة الخط المستقيم بين موضع السيارة بعد تنفيذ كل تعليمات وتنفيذ موضع السيارة قبل تنفيذ التعليمات.
[متطلبات تنسيق المدخلات والمخرجات]
يدخل المستخدم أولاً عددًا صحيحًا (n <100) ، مما يشير إلى أنه سيكون هناك تعليمات n بعد ذلك.
التالي أدخل تعليمات n. تتكون كل تعليمات من L و R والأرقام فقط (الأرقام هي أعداد صحيحة بين 0 و 100)
كل تعليمات لا يوجد بها أكثر من 256 حرفًا.
يخرج البرنامج خطوط النتائج.
تمثل كل نتيجة مسافة الخط المستقيم بين المواضع الأمامية والخلفية للنقل عند تنفيذ الأمر المقابل. يتطلب تقريب إلى 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 ؛ صورة = 0 ؛ } fushu العامة (double r ، double i) {real = r ؛ صورة = أنا ؛ } 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 ؛ العودة ص. } public fushu dot (double r ، double i) {fushu t = new fushu () ؛ t.real = real * r - image * i ؛ t.image = حقيقي * i + image * r ؛ العودة ر ؛ }} class robot {private int x = 0 ؛ private int y = 0 ؛ Private Fushu dir = New Fushu (1،0) ؛ المشي الفراغ العام (سلسلة S) {int sum = 0 ؛ لـ (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 ؛ مجموع = 0 ؛ if (c == 'l') dir = dir.dot (0،1) ؛ else dir = dir.dot (0 ، -1) ؛ } آخر = 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) ؛ }} class public class walk {public static void main (string [] args) rems {robot t = new robot () ؛ T.Walk ("3R4") ؛ T.show () ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.