繁体   English   中英

C 中基于用户输入的 For 循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM