坐标移动
来源:互联网 发布:js 父窗口 span 编辑:程序博客网 时间:2024/06/10 04:52
开发一个坐标计算工具, 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)
题目类别: 字符串 难度: 中级 运行时间限制:10Sec内存限制:128MByte阶段: 入职前练习 输入:一行字符串
输出:最终坐标,以,分隔
样例输入:A10;S20;W10;D30;X;A1A;B10A11;;A10;
样例输出:
10,-10
#include <iostream>#include <string>#include <cstring>#include <cctype>using namespace std;int main(){int x=0,y=0;int flag = 1; //状态标识,0表示计算遇到非法字符,2表示正在计算操作数数char current; //保存当前操作:A D W Sint sum = 0; //计算移动数大小char s[1024] = {0}; //保存输如字符串size_t len;int i;gets(s);len = strlen(s);//cout<<len<<" ";for(i = 0; i < len; i++) //处理{if(s[i] == ';' && flag) //遇到‘;’并且计数过程中没有遇到非法字符 flag!=0{switch(current) //执行对应操作{case 'A':x -= sum;break;case 'D':x += sum;break;case 'W':y += sum;break;case 'S':y -= sum;break;default:break;}flag = 1;sum = 0;current = ' ';continue;}//遇到操作符,判断该操作符是否合法if(s[i] == 'A' || s[i] == 'S' || s[i] == 'W' || s[i] == 'D') {if(flag != 2) //确定不是在计算操作数时遇到的字符,如果是则不处理{if(i >= 1){if(s[i-1]== ';') //前一个字符确定为‘;’,{current = s[i];continue;}}else //如果是第一个字符,则直接保存{current = s[i];continue;}}}//当前保存的为操作符,则计算操作数if(current == 'A' || current == 'S' ||current == 'W'|| current == 'D') {if(!isdigit(s[i])) //遇到非数字,则初始化,继续下一循环{flag = 0; sum = 0;current = ' ';continue;}else //否则计算操作数{flag = 2; //正在计算操作数标记sum = sum *10 + s[i] - '0';//cout<<sum<<" ";}}}cout<<x<<','<<y;return 0;}
上面的代码是早些时候写的,其实现在想想应该可以以';'为分解符,取出每一个字符串再进行判断处理会更加方便!
0 0
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 移动坐标
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- 坐标移动
- JZP Set
- 日期类
- codeforces 118A String Task(字符串水题)
- Opencv中HOG+SVM进行行人检测
- 关于C的预编译 宏定义 的一些使用
- 坐标移动
- B-tree/B+tree/B*tree
- 8大常见蔬果助准妈妈夏季养生
- 使用sublime text2如何新建文件快速生成HTML头部信息?
- 互联网时代的社会语言学:基于SNS的文本数据挖掘(转载)
- 胜多负少的功夫大使馆
- IOS--正则表达式的使用(字符串的查找和替换)
- opengl读取24位BMP文件为纹理并处理黑色背景为透明
- hibernate中update和saveOrUpdate的区别