私はここにループで立ち往生しています。私はゼロでいっぱいの行列を持っており、グラフにkの辺を追加したいと思います。 Visual Studioにエラーが表示されていません。このコード行に行く間に:なぜ私はしばらくループに詰まっていますか?[C++]
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;
}
n、v、およびkの宣言を確認できますか? –
これをデバッガで実行するとどうなりますか? –
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –