【发布时间】:2019-12-03 02:40:24
【问题描述】:
我对编程还是很陌生,而且由于我们最近开始使用 C,因此我们的任务是在假设的无限网格上创建一个程序(机器人模拟器),当然只使用三个可能的动作:右转,左转前进。输出只需 x 和 y 坐标 (x,y)。现在的问题是,我只能通过所有四个动作(上,下,左,右 - 北,南,西,东)来理解并做到这一点(假设没有左转或右转选项,左意味着移动 1位置向左,向右意味着向右移动 1 个位置等))。所以只是它们之间的一个简单的减法给了我最终的坐标,但我根本不知道如何为那些有 2 个转弯选项和前进的人制定规则。我会把我的代码留给我已经完成的任务如果有人认为我可以升级那个或者对如何使它工作有任何建议或想法,请告诉我。
#include<stdio.h>
static void position(int n, char* string)
{
int left = 0, right = 0, up = 0, down = 0;
for (int i = 0; i < n; i++) {
if (string[i] == 'L')
left++;
else if (string[i] == 'R')
right++;
else if (string[i] == 'U')
up++;
else if (string[i] == 'D')
down++;
}
printf("(%d,%d)", (right - left), (up - down));
}
int main()
{
printf("Enter your movement: ");
char string[1000];
scanf("%s", string);
int n;
for (n = 0; string[n] != '\0'; ++n);
string[100] = string[n];
position(n, string);
}
【问题讨论】:
-
C# 不是 C++ 不是 C。它们不是同一种语言,只是因为它们以相同的字母开头,就像毛毛虫、汽车和胡萝卜一样。请仅使用您实际使用的语言的标签。标签垃圾邮件是让您的问题被关闭和否决的绝佳方式。在开始发帖之前,您应该花一些时间查看tour 并阅读help center 页面以了解该网站的工作原理。
-
我不认为您的意图是只给
position打一次电话。您的代码需要跟踪当前位置,position函数需要为重复输入更新当前位置。然后你只需要计算出每个操作的数学运算是什么。例如:根据 left 的定义方式,它可能是 left(x,y)=(x,y-1)。然后你需要处理边界条件。 -
请提供样本输入和所需输出的集合。
-
这部分我没看懂,请多解释一下:“所以只是它们之间的简单减法给了我最终的坐标”。
-
我错过了有关初始标题的信息。我们可以假设机器人最初面向北/上吗?这意味着“前进”的第一个命令将机器人带到(0,1),另一个“前进”到(0,2)。