如何生成循环数的C++
我想要一系列的数字,比如说30-50是循环的。所以如果你做50+1=30,或者49+3=31。在C++中我该怎么做?我相信我会用%运算符来做,但我很难理解它。在执行加法或减法之前,你需要减去30,然后执行运算,然后除以模20,因为50-30=20,最后加30得到你想要的结果。你可以简单地使用%运算符。例如,要计算49+3,可以将其重写为: 30 + 22 % 20. 这将导致32。如何生成循环数的C++,c++,math,cyclic,C++,Math,Cyclic,我想要一系列的数字,比如说30-50是循环的。所以如果你做50+1=30,或者49+3=31。在C++中我该怎么做?我相信我会用%运算符来做,但我很难理解它。在执行加法或减法之前,你需要减去30,然后执行运算,然后除以模20,因为50-30=20,最后加30得到你想要的结果。你可以简单地使用%运算符。例如,要计算49+3,可以将其重写为: 30 + 22 % 20. 这将导致32。 我们在这里做的是,简单地取大于30的整数值,然后将其模化20,得到一个范围为30-50的数字,因为当你对一个数字使
我们在这里做的是,简单地取大于30的整数值,然后将其模化20,得到一个范围为30-50的数字,因为当你对一个数字使用模20时,你将得到一个范围为0-19的值。你将在环Z/21Z中工作。只需正常进行加法,然后将任何数字映射回规范范围,您可以执行以下操作: //将环Z/stop start+1Z中的'n'映射为等效值 //开始和停止之间的数字(含) 样板 constexpr T to_ringT n,T start,T stop无异常{ T环尺寸=停止-启动+1; n=环尺寸的n%; 如果n<0,则n=n+环尺寸%环尺寸; //现在0停止n-=环的大小;
assertstart以下是我对这一点的看法。如果您想要一个递归函数来为您执行此操作,您可以通过以下多个步骤将其写出:
#include <iostream>
int next_cyclical_number(int x, int min, int max){
if( min >= max )
return -99999;
if( x < min )
x = min;
int mod_value = max - min;
int offset = min;
int temp = x - min;
int remainder = (temp + 1)%mod_value;
int ret_val = min + remainder;
return ret_val;
}
int main(int argc, char *argv[])
{
// show 100 numbers using the function
int current_number = 0;
for(int i = 0; i < 100; i++){
current_number = next_cyclical_number(current_number, 30, 51);
std::cout << "i: " << i << "\t" << "number: " << current_number << std::endl;
}
return 0;
}
你需要它做什么?你需要一个完整的类型和这样的算术,还是只做一些计算,只关心最终的结果?重复从0到20,每个数字加30。是一个选项。对于int i=0;;++i{std::尽管要小心负值,模运算不一定把负数包装成它们的正等价物,显然这是UB所说的。
i: 0 number: 31
i: 1 number: 32
i: 2 number: 33
i: 3 number: 34
i: 4 number: 35
i: 5 number: 36
i: 6 number: 37
i: 7 number: 38
i: 8 number: 39
i: 9 number: 40
i: 10 number: 41
i: 11 number: 42
i: 12 number: 43
i: 13 number: 44
i: 14 number: 45
i: 15 number: 46
i: 16 number: 47
i: 17 number: 48
i: 18 number: 49
i: 19 number: 50
i: 20 number: 30
i: 21 number: 31
i: 22 number: 32
i: 23 number: 33
i: 24 number: 34
i: 25 number: 35
i: 26 number: 36
i: 27 number: 37
i: 28 number: 38
i: 29 number: 39
i: 30 number: 40
i: 31 number: 41
i: 32 number: 42
i: 33 number: 43
i: 34 number: 44
i: 35 number: 45
i: 36 number: 46
i: 37 number: 47
i: 38 number: 48
i: 39 number: 49
i: 40 number: 50
i: 41 number: 30
i: 42 number: 31
i: 43 number: 32
i: 44 number: 33
i: 45 number: 34
i: 46 number: 35
i: 47 number: 36
i: 48 number: 37
i: 49 number: 38
i: 50 number: 39
i: 51 number: 40
i: 52 number: 41
i: 53 number: 42
i: 54 number: 43
i: 55 number: 44
i: 56 number: 45
i: 57 number: 46
i: 58 number: 47
i: 59 number: 48
i: 60 number: 49
i: 61 number: 50
i: 62 number: 30
i: 63 number: 31
i: 64 number: 32
i: 65 number: 33
i: 66 number: 34
i: 67 number: 35
i: 68 number: 36
i: 69 number: 37
i: 70 number: 38
i: 71 number: 39
i: 72 number: 40
i: 73 number: 41
i: 74 number: 42
i: 75 number: 43
i: 76 number: 44
i: 77 number: 45
i: 78 number: 46
i: 79 number: 47
i: 80 number: 48
i: 81 number: 49
i: 82 number: 50
i: 83 number: 30
i: 84 number: 31
i: 85 number: 32
i: 86 number: 33
i: 87 number: 34
i: 88 number: 35
i: 89 number: 36
i: 90 number: 37
i: 91 number: 38
i: 92 number: 39
i: 93 number: 40
i: 94 number: 41
i: 95 number: 42
i: 96 number: 43
i: 97 number: 44
i: 98 number: 45
i: 99 number: 46