特定のユースパレスがロボット車のバッチを導入しました。事前に入力された指示を受け入れて、それらに従うことができます。車の基本的な動きは非常にシンプルで、3つのタイプのみがあります。左に曲がる(lとして記録)、右に曲がり(Rとして記録)、数センチ(直接記録)を前進させます。
たとえば、次のコマンドを車に入力できます。
15L10R5LRR10R20
次に、車は最初に15 cmまっすぐに行き、左に曲がり、10 cm歩いてから右に曲がります...
このコマンド文字列で、車が出発点に戻ったことを確認することは難しくありません。
タスクは次のとおりです。プログラムを作成し、ユーザーからの入力手順、プログラムは、各命令が実行された後、命令が実行される前に車の位置間の直線距離を出力します。
[入力および出力形式の要件]
ユーザーは最初に整数n(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; } public fushu(double r、double i){real = r;画像= 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を返します。 }} class robot {private int x = 0;プライベートint y = 0; Private 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)throws exception {robot t = new robot(); T.Walk( "3R4"); t.show(); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。