C语言 坐标移动详解及实例代码

发布时间 - 2026-01-10 22:29:31    点击率:

题目描述

开发一个坐标计算工具, 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语言  # 坐标移动  # 坐标移动如何实现  # 坐标移动实例代码  # c语言计算三角形面积代码  # C语言中字符的输入输出以及计算字符个数的方法详解  # C语言求幂计算的高效解法  # C语言实现计算树的深度的方法  # C语言中计算正弦的相关函数总结  # 安装OpenMPI来配合C语言程序进行并行计算  # C语言科学计算入门之矩阵乘法的相关计算  # C语言简单实现计算字符个数的方法  # 北邮计算机考研复试题的C语言解答精选  # C语言中计算二叉树的宽度的两种方式  # C语言实现直角坐标转换为极坐标的方法  # 是一个  # 两位  # 希望能  # 并将  # 谢谢大家  # 坐标点  # Code  # class  # cpp  # brush  # gt  # string  # namespace  # include  # lt  # iostream  # A1A  # YAD  # strong  # br 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Android okhttputils现在进度显示实例代码  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何使用withoutEvents方法临时禁用模型事件  java获取注册ip实例  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何用IIS7快速搭建并优化网站站点?  使用Dockerfile构建java web环境  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  ,南京靠谱的征婚网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  北京企业网站设计制作公司,北京铁路集团官方网站?  如何利用DOS批处理实现定时关机操作详解  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速搭建高效服务器建站系统?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel distinct去重查询_Laravel Eloquent去重方法  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  独立制作一个网站多少钱,建立网站需要花多少钱?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  企业网站制作这些问题要关注  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Android自定义控件实现温度旋转按钮效果  js代码实现下拉菜单【推荐】  详解Android图表 MPAndroidChart折线图  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何用PHP工具快速搭建高效网站?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何使用Telescope进行调试?(安装和使用教程)  西安专业网站制作公司有哪些,陕西省建行官方网站?  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何在搬瓦工VPS快速搭建网站?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何用腾讯建站主机快速创建免费网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel如何为API编写文档_Laravel API文档生成与维护方法  北京的网站制作公司有哪些,哪个视频网站最好?  如何快速搭建安全的FTP站点?