2016-12-10 11 views
-3

私はここにループで立ち往生しています。私はゼロでいっぱいの行列を持っており、グラフに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; 
} 
+1

n、v、およびkの宣言を確認できますか? –

+1

これをデバッガで実行するとどうなりますか? –

+2

このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –

答えて

1

clang-formatを通して、あなたのコードを入れてください:

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

これは明確にする必要があります:セミコロンを削除します!

オンラインフォーマッタhereがあります。あなたが好きなら、あなたのIDEやコードエディタで設定してください。このような問題を解決し、コードをより美しくします。

+1

私の神様、私は今、とても馬鹿だと感じます。それは単純だった。それは動作します、ありがとう! – Tabqwerty

+0

:)真剣に - 'clang-format'を使用してください。もっと楽しくコーディングしましょう! –

+0

私は単純なタイプミスでこの質問に答えました。しかし、おそらくそれは迷子になっているはずです。 ';' sはたくさん起こる問題です。 –

関連する問題