大佬们,问个问题啊,勿喷
c++吧
全部回复
仅看楼主
level 5
cyshen☜
楼主
现在在自学c++,学到循环这里,我想问下像这种num-num7不能在一组里面重复能做到么
2023年08月15日 04点08分
1
level 5
cyshen☜
楼主
怎么实现呢
2023年08月15日 04点08分
2
莜佑优🌚
不是很明白你的问题
2023年08月18日 09点08分
level 5
cyshen☜
楼主
就是这一排随机数字不能出现相同的数字
2023年08月19日 07点08分
3
level 1
究极小白
你是否在寻找“set”?
2023年08月19日 08点08分
4
level 1
想转土木捏😇
随机就可能会出现重复的啊 你不想要重复的就再加一个检测 另外你那个if里面写的也不对
会变成 1==nums 这种
2023年08月19日 10点08分
5
cyshen☜
是的,我把下面那一段全删了,下面那一段好像没啥用
2023年08月19日 13点08分
想转土木捏😇
@cyshen☜
你要一一比对不重复的话 应该要写一个o的平方的循环
2023年08月19日 13点08分
level 6
十三♋℃
就是想要7个没有重复数字的数对吧?学学数据结构,用std里边的集合就能做到快速检测有没有重复,或者你自己弄个简单的7节点二叉树结构,都可以
2023年08月20日 00点08分
6
level 5
再奔跑下去
可以,你可以用指针数组,把每个变量的地址放到指针数组,然后for循环这个指针数组
2023年08月21日 12点08分
7
level 12
火柴人天秤
看了楼主的代码,如果限定随机数的值域是 [1, 33] 的话,其实也可以用 random shuffle 实现,具体来讲就是:预先生成一个数组,按顺序存放 1 到 33 的整数,每次将数组随机打乱,然后从数组中截取长度为 8 的一段作为结果输出。
这是我写的示例:
运行结果:
2023年08月21日 14点08分
8
level 9
江沢日香
第34行括号中的条件语句,你是不是想问怎么在这里填入合适的条件用来判断这几个数字中是否有重复数字?
我觉得你可以定义一个函数,输入参数是八个数字,返回一个bool值。当八个参数互不相同时返回true,否则返回false。
具体的实现方式可以这样做:先判断第一个数和第二个数是否相等,再判断第三个数是否和前两个数都不等;再判断第四个数是否和前三个数都不等;...
定义好这个函数后,在括号中直接调用这个函数就好了。
但是我发现你的代码可能有其他更严重的问题,例如第36行写了一个无限循环,没有退出条件,如果程序进了这个循环就会卡在里面。如果你在第34行的判断是想要当这8个数字中有重复时,就重新取值直到无重复,那你应该把34行的if改成while,再把36行的循环去掉。然后再把第38到45行中的“int”去掉,因为你在这个循环里面写“int num=val;”其实是定义了一个新的局域变量,并不是修改了num的值。
另外我没看出31行的j是用来干什么的,只看已经实现的效果,如果在32行下面这层循环中没有改变j的值的语句,那么这层循环就完全没用,可以把31、32行去掉。
最后还有个建议,类似于这个例子中num到num7这八个数字,他们需要执行的操作几乎是完全相同的,那么你可以考虑用数值或者STL容器来存储他们,这样可以用一些比较简洁的遍历操作来处理他们
2023年08月21日 16点08分
9
1