如果退出数组,请从另一侧输入
If exit array, enter from the other side
例如,如果我有1、2、3、4、5、6、7数组,并且我处于第四位(数字5),并且必须将其移至正确的4个位置,您应该处于位置1(数字2)。负数也是如此,但您向左移动。我猜需要一段时间(true)循环?
假设i
是索引,而n
是数组的大小。对于正i
所需索引= i%n
对于负i
i%n
返回负残基,因此所需的索引是 n+i%n
您可以使用
int index(int i, int n) {
return i%n < 0 ? n + (i%n) : i%n;
}
您可以像这样计算索引:
var newIndex = (index + 4) % 7;
因此,第四位置变为(4 4)%7或1。
始终使用命名函数和跟随代码路径,而不是voodoo一个工作
public void MyTest()
{
var testData = new[] { 1, 2, 3, 4, 5, 6, 7 };
Assert.AreEqual(2, TraverseCircularArray(testData, 5, 3));
Assert.AreEqual(6, TraverseCircularArray(testData, 2, -4));
}
private int TraverseCircularArray(int[] array, int currentIndex, int interval)
{
var i = array[currentIndex];
if (currentIndex + interval < 0)
i = array[array.Length + (interval + currentIndex)];
else if (currentIndex + interval >= array.Length)
i = array[currentIndex - interval - 1];
else
i = array[currentIndex + interval];
return i;
}
相关文章:
- C++逗号分隔的输入数组代码过早退出
- 程序在接受输入后退出
- 如何实现否定用户输入退出程序和打印列表?
- 程序在没有输入的情况下退出,它有基本的,驱动的类属性初始化问题
- C++中的奇怪异常代码,当用户输入为 23 时,退出值 1,073,740,940(代码:0xc0000374)
- C++:如果用户输入数字将其转换为单词,并且如果按回车键程序应退出,则使用开关大小写
- 为什么在接受输入后循环退出时不会这样做
- C++:为什么当我想输入"q"退出时,这会给我一个异常抛出错误?
- 退出循环,除非未给出输入
- 使用ENUM输入和退出菜单,然后切换SFML
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 使用输入重载时,是否可以像这样退出 while 循环
- 虽然循环在执行名称输入时过早退出
- 如何在C++中"q"用户输入时退出 do-while 循环
- 我想让程序保持运行,直到用户输入 n 退出程序
- 如果退出数组,请从另一侧输入
- 我找不到第一个用户输入后立即退出程序的原因
- 为什么当我尝试输入"x"退出程序时出现分段错误
- 保持运行程序,直到用户输入退出
- 在c++中使用函数中的用户输入退出程序