Istana pemuda tertentu memperkenalkan sejumlah mobil robot. Anda dapat menerima instruksi yang sudah masuk sebelumnya dan mengikuti mereka. Gerakan dasar mobil sangat sederhana, hanya ada 3 jenis: belok kiri (direkam sebagai l), belok kanan (direkam sebagai r), dan berjalan maju beberapa sentimeter (direkam secara langsung).
Misalnya, kita dapat memasukkan perintah berikut ke mobil:
15L10R5LRR10R20
Kemudian, mobil pertama -tama akan lurus selama 15 cm, belok kiri, lalu berjalan 10 cm, lalu belok kanan, ...
Tidak sulit untuk melihat bahwa untuk string perintah ini, mobil kembali ke titik awalnya.
Tugas Anda adalah: Tulis program, instruksi masukan oleh pengguna, dan program menghasilkan jarak garis lurus antara posisi mobil setelah setiap instruksi dieksekusi dan posisi mobil sebelum instruksi dieksekusi.
[Persyaratan Format Input dan Output]
Pengguna pertama -tama memasuki integer n (n <100), menunjukkan bahwa akan ada n instruksi selanjutnya.
Selanjutnya masukkan n instruksi. Setiap instruksi hanya terdiri dari L, R dan angka (angka adalah bilangan bulat antara 0 dan 100)
Setiap instruksi memiliki panjang tidak lebih dari 256 karakter.
Program mengeluarkan N baris hasil.
Setiap hasil mewakili jarak garis lurus antara posisi depan dan belakang kereta saat mengeksekusi perintah yang sesuai. Membutuhkan pembulatan ke 2 tempat desimal.
Misalnya: Input Pengguna:
5
L100R50R10
3lll5rr4l12
II
100r
5L5L5L5
Kemudian output program:
102.96
9.06
0,00
100.00
0,00
Kode:
impor java.util.*; class fushu {public double real; gambar ganda publik; public fushu () {real = 0; gambar = 0; } public fushu (double r, double i) {real = r; gambar = i; } public fushu dot (fushu x) {fushu r = new fushu (); r.real = nyata * x.real - gambar * x.image; r.image = nyata * x.image + gambar * x.real; mengembalikan r; } public fushu dot (double r, double i) {fushu t = new fushu (); t.real = nyata * r - gambar * i; t.image = nyata * i + gambar * r; mengembalikan t; }} class robot {private int x = 0; private int y = 0; private fushu dir = new fushu (1,0); public void walk (string s) {int sum = 0; untuk (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; jumlah = 0; if (c == 'l') dir = dir.dot (0,1); selain itu 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) melempar Exception {robot t = robot baru (); T.Walk ("3R4"); t.show (); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.