藍橋杯 機械人行走 模擬 類

2021-06-29 01:04:07 字數 1204 閱讀 3382

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種:左轉(記為l),右轉(記為r),向前走若干厘公尺(直接記數字)。

例如,我們可以對小車輸入如下的指令:

15l10r5lrr10r20

則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,...

不難看出,對於此指令串,小車又回到了出發地。

你的任務是:編寫程式,由使用者輸入指令,程式輸出每條指令執行後小車位置與指令執行前小車位置的直線距離。

【輸入、輸出格式要求】

使用者先輸入乙個整數n(n<100),表示接下來將有n條指令。

接下來輸入n條指令。每條指令只由l、r和數字組成(數字是0~100之間的整數)

每條指令的長度不超過256個字元。

程式則輸出n行結果。

每條結果表示小車執行相應的指令前後位置的直線距離。要求四捨五入到小數後2位。

例如:使用者輸入:

5l100r50r10

3lll5rr4l12

ll100r

5l5l5l5

則程式輸出:

102.96

9.06

0.00

100.00

0.00

【注意】

請仔細除錯!您的程式只有能執行出正確結果的時候才有機會得分!

模擬小車的行走,初始的時候車頭應該是朝前(u)的,然後根據l和r的數量不同,分別會朝向後(d),左(l),右(r),還要儲存小車的當前座標和上一步的座標,這麼多引數都是與小車有關,不難想到通過建立乙個car類來將這麼多資料封裝起來,使**更加有條理,然後通過在類內部寫一些函式來完成相應的功能,比如轉向,前進,計算距離等,在除錯的時候還會用到顯示座標等函式。主函式中首先當然是輸入指令,在分析指令的時候,我才用的是逐個字元分析,即從第乙個字元開始遍歷,當遇到字母的時候,就呼叫轉向函式,當遇到數字的時候,就將這個數字串讀取出來,轉換成真正的數字,呼叫前進函式,當一條指令讀取完成之後,就呼叫計算函式計算出距離,不要忘了結果保留兩位小數。

#include#include#include#includeusing namespace std;

class car

void changedir(char d)

if(d=='r')

}void run(int dis)

double caldis()

void show_pos()

}cout<

藍橋杯 機械人行走

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種 左轉 記為l 右轉 記為r 向前走若干厘公尺 直接記數字 例如,我們可以對小車輸入如下的指令 15l10r5lrr10r20 則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,不難看出,對於此指令...

藍橋杯 機械人行走

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種 左轉 記為l 右轉 記為r 向前走若干厘公尺 直接記數字 例如,我們可以對小車輸入如下的指令 15l10r5lrr10r20 則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,不難看出,對於此指令...

機械人行走

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種 左轉 記為l 右轉 記為r 向前走若干厘公尺 直接記數字 例如,我們可以對小車輸入如下的指令 15l10r5lrr10r20 則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,不難看出,對於此指令...