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


相关推荐: 怎么用AI帮你设计一套个性化的手机App图标?  如何快速生成可下载的建站源码工具?  进行网站优化必须要坚持的四大原则  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Windows Hello人脸识别突然无法使用  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何在万网利用已有域名快速建站?  Laravel如何实现API速率限制?(Rate Limiting教程)  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  装修招标网站设计制作流程,装修招标流程?  JS弹性运动实现方法分析  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  ,网页ppt怎么弄成自己的ppt?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  简历没回改:利用AI润色让你的文字更专业  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何快速搭建自助建站会员专属系统?  如何挑选最适合建站的高性能VPS主机?  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何实现本地化和多语言支持?(i18n教程)  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Firefox Developer Edition开发者版本入口  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  大连 网站制作,大连天途有线官网?  北京的网站制作公司有哪些,哪个视频网站最好?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在万网自助建站平台快速创建网站?  Python制作简易注册登录系统  如何在IIS7上新建站点并设置安全权限?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  详解Android——蓝牙技术 带你实现终端间数据传输  青岛网站建设如何选择本地服务器?  QQ浏览器网页版登录入口 个人中心在线进入  javascript读取文本节点方法小结  如何快速搭建支持数据库操作的智能建站平台?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何用IIS7快速搭建并优化网站站点?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】