为什么我会陷入困境?[C ]

Why am I stuck in a while loop?[c++]

本文关键字:陷入困境 为什么      更新时间:2023-10-16

我在这里陷入困境。我有一个填充零的矩阵,我想在图中添加k边缘。我在Visual Studio中没有显示错误。当它到达这条代码时:

int z = 0;
    while (z!=k);
    {
        int a = std::rand() % n;
        int b = std::rand() % n;
        if ((v[a][b] != 1) && (a != b))
        {
            v[a][b] = 1;
            v[b][a] = 1;
            z++;
        }
    }

程序陷入无限循环;

这是完整的代码:

std::vector<std::vector<int>> random_gnk(int n, int k)
{
    srand(time(NULL));
    int temp = 0;
    for (int i = 0; i < n; i++)
    {
        temp = temp + i;
    }
    std::vector<std::vector<int>> v;
    if (k > temp || k<0)
    {
        std::cout << "Blad. Podano zla liczbe krawedzi." << std::endl;
        return v;
    }
    for (int i = 0; i < n; i++)
    {
        std::vector<int>row;
        for (int j = 0; j < n; j++)
        {
            row.push_back(0);
        }
        v.push_back(row);
    }
    int z = 0;
    while (z!=k);
    {
        int a = std::rand() % n;
        int b = std::rand() % n;
        if ((v[a][b] != 1) && (a != b))
        {
            v[a][b] = 1;
            v[b][a] = 1;
            z++;
        }
    }
    return v;
}
void GNK()
{
    int n, k;
    std::cout << "Podaj wielkosc n grafu: " << std::endl;
    std::cin >> n;
    std::cout << "Podaj liczbe k krawedzi grafu: " << std::endl;
    std::cin >> k;
    print_matrix(random_gnk(n, k));
    return;
}

通过clang-format放置您的代码:

  int z = 0;
  while (z != k)
    ;
  {

这应该很清楚:删除分号!

这里有一个在线格式化器。如果您喜欢,请使用IDE或代码编辑器进行设置。它将解决这样的问题并使您的代码更加美丽。