中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中坐標移動的示例分析

發布時間:2021-07-22 09:43:11 來源:億速云 閱讀:157 作者:小新 欄目:編程語言

小編給大家分享一下C語言中坐標移動的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

題目描述

開發一個坐標計算工具, A表示向左移動,D表示向右移動,W表示向上移動,S表示向下移動。從(0,0)點開始移動,從輸入字符串里面讀取一些坐標,并將最終輸入結果輸出到輸出文件里面。

 輸入: 

合法坐標為A(或者D或者W或者S) + 數字(兩位以內) 

坐標之間以;分隔。

 非法坐標點需要進行丟棄。如AA10;  A1A;  $%$;  YAD; 等。

 下面是一個簡單的例子 如: 

A10;S20;W10;D30;X;A1A;B10A11;;A10; 

處理過程: 

起點(0,0)
 
+  A10  = (-10,0)
 
+  S20  = (-10,-20)
 
+  W10 = (-10,-10)
 
+  D30 = (20,-10)
 
+  x  = 無效
 
+  A1A  = 無效
 
+  B10A11  = 無效
 
+ 一個空 不影響
 
+  A10 = (10,-10)

 結果 (10, -10)

輸入描述:

一行字符串

輸出描述:

最終坐標,以,分隔

輸入例子:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

輸出例子:

10,-10

Code:

#include<iostream> 
#include<string> 
using namespace std; 
 
bool isValid(string s, char &key, int &step){ 
  if (s.size()<2 || s.size()>3)return false; 
  if (s[0] != 'A' && s[0] != 'D' && s[0] != 'W' && s[0] != 'S') 
    return false; 
  key = s[0]; 
  if (s.size() == 2 && s[1] >= '0' && s[1] <= '9'){ 
    step = s[1] - '0'; 
    return true; 
  } 
  if (s.size() == 3 && s[1] >= '0' && s[1] <= '9' && s[2] >= '0' && s[2] <= '9'){ 
    step = (s[1] - '0') * 10 + (s[2] - '0'); 
    return true; 
  } 
  return false; 
} 
 
 
void caculator(string s, int &x, int &y, char key, int step){ 
  switch (key){ 
  case 'A': 
    x -= step; 
    break; 
  case 'D': 
    x += step; 
    break; 
  case 'W': 
    y += step; 
    break; 
  case 'S': 
    y -= step; 
    break; 
  } 
  return; 
} 
 
int main(){ 
  string str; 
  while (cin >> str){ 
    int x = 0; 
    int y = 0; 
    int i = 0; 
    while (i<str.size()){ 
      string temp; 
      char key; 
      int step; 
      while (str[i] != ';'){ 
        temp.push_back(str[i]); 
        i++; 
      } 
      if (isValid(temp, key, step)) 
        caculator(temp, x, y, key, step); 
      i++; 
    } 
    cout << x << ',' << y<<endl; //must add endl(wtf...,waste time) 
  } 
  return 0; 
}

以上是“C語言中坐標移動的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

偃师市| 柞水县| 怀集县| 会泽县| 册亨县| 青州市| 土默特右旗| 遂川县| 丰原市| 淮北市| 罗甸县| 古田县| 望谟县| 香河县| 青阳县| 金阳县| 无极县| 信宜市| 萨迦县| 吴旗县| 民丰县| 洪洞县| 怀柔区| 阳泉市| 财经| 丹寨县| 济阳县| 松原市| 巴彦淖尔市| 辉南县| 南和县| 汕尾市| 南平市| 阿荣旗| 灵武市| 利津县| 安塞县| 五河县| 安仁县| 永昌县| 安福县|