[英]For Loops Based on User Input in C
我有不同的路径,这些路径在二维数组中预定义为 [seed][sequence],其中“seed”是路径 (0-255),“sequence”是路径中的索引 (0-49)。 当比较的路径数量可能因运行而异时,是否有一种方法可以一次整齐地比较输入定义的路径数量?
我的意见是如何收集的:
#define MAX 250
int numUsers; //the number of users
int users[MAX][2]; //each user and their respective seed
int collisions = 0; //number of collisions
static inline void compareNumUsers(){
printf("Enter the number of users: ");
scanf("%d", &numUsers);
printf("\n");
for(int i = 0; i < numUsers; i++){
printf("Enter the seed of user%d [0-255]: ", i+1);
scanf("%d", &users[i][1]);
}
}
最好的情况下答案不是一系列 case-switch 语句
我希望有可能达到这样的效果:
(assume 3 given inputs)
for(int j = 0; j < pathLength; j++){
if(paths[users[0][1]][j] == paths[users[1][1]][j] || paths[users[1][1]][j] == paths[users[2][1]][j] || paths[users[2][1]][j] == paths[users[0][1]][j])
collisions++;
}
如果我说我在思考如何提出这个问题时没有混淆自己,那我就是在撒谎,所以如果您对某些事情感到困惑,请让我确认我不会被冒犯。
比较也不必与我提供的方式相同,这正是我目前的想法。
任何帮助表示赞赏。 先感谢您。
使用嵌套循环来比较所有对。
for (int j = 0; j < pathlength; j++) {
for (int i = 0, broken = 0; !broken && i < numUsers - 1; i++) {
for (int k = i + 1; k < numUsers; k++) {
if (paths[users[i][1]][j] == paths[users[k][1]][j]) {
collisions++;
broken = 1;
break;
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.