题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

#include <iostream>
using namespace std;
#include<string>
#include<cmath>
int getNum(string str) {
    int num = 0;
    for (int i = str.size() - 1, j = 0; i >= 1 ; i--, j++) {
        if ('0' <= str[i] && str[i] <= '9' ) {
            num = num + (str[i] - '0') * (pow(10, j));
        } else {
            return -1;
        }
    }
    return num;
}

int main() {
    string str;
    int x = 0, y = 0;

    while (getline(cin, str, ';')) {
        switch (str[0]) {
            case 'A': {
                    if (getNum(str) != -1) {
                        x = x - getNum(str);
                    }

                    break;
                }
            case 'D': {
                    if (getNum(str) != -1) {
                        x = x + getNum(str);
                    }
                    break;
                }
            case 'W': {
                    if (getNum(str) != -1) {
                        y = y + getNum(str);
                    }
                    break;
                }
            case 'S': {
                    if (getNum(str) != -1) {
                        y = y - getNum(str);
                    }
                    break;
                }
            default: {
                    break;
                }



        }
    }
    cout << x << "," << y << endl;
}

使用 while (getline(cin, str, ';')) 这个语句读取以分号为结尾的字符串很好用,再简单写一个带报错的十进制字符串转int的函数就可以了

华为机试刷题记录 文章被收录于专栏

记录一下手打代码的解题思路方便复习

全部评论

相关推荐

丿南烟丶:黑白模板吧,不要这样花哨的。 主要成就太空了,和获奖融在一起,写一两行就行了。 职业技能不要这样排,就传统的掌握精通什么什么然后举例补充的一些重要技术点。 自我介绍说实话也没啥用,可以删了。 把自己的两个项目方案细节补充上去,为什么这样设计,怎么设计,成果是什么按star法则来写 你要引导面试官来问你的技能和项目,你的获奖和自我介绍别人可能看都不看一眼或者不太在乎,重要的是展示你能干活的能力
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务