Program wypisuje wynik, lecz nie zakańcza się.
Ostatnio zmodyfikowano 2017-11-11 20:39
Qabrix Temat założony przez niniejszego użytkownika |
Program wypisuje wynik, lecz nie zakańcza się. » 2017-11-11 20:06:56 Witam, mam dziwny problem, mianowicie mój program działa poprawnie, wypisuje wynik cout << maxi << " " << wynik2;
lecz wisi w konsoli i nie chce się zakończyć. Oto kod: #include <iostream> #include <vector> #include <fstream>
using namespace std;
int main() { fstream plik; plik.open( "c:/c++/test.txt" ); int m, n, k, x, licznik, odtabeli, maxi, wynik2, ilosc; licznik = odtabeli = maxi = wynik2 = ilosc = 0; int * wilosc = & ilosc; int * wlicznik = & licznik; plik >> m >> n >> k; unsigned long long ** tab = new unsigned long long *[ k ]; for( int i = 0; i < k; i++ ) tab[ i ] = new unsigned long long[ m ]; int elementy[ 100000 ] = { 0 }; for( int wliczba = 0; wliczba < m; wliczba++ ) { for( int wliczbakol = 0; wliczbakol < n; wliczbakol++ ) { if( wliczba >( k - 1 ) ) plik >> tab[ licznik ][ wliczbakol ]; else plik >> tab[ wliczba ][ wliczbakol ]; } if( wliczba >( k - 1 ) ) licznik++; if( licznik >( k - 1 ) ) licznik = 0; if( wliczba <( k - 1 ) ) continue; if( wliczba ==( k - 1 ) ) { for( int i = 0; i < k; i++ ) { for( int j = 0; j < k; j++ ) { if( elementy[ tab[ i ][ j ] ] == 0 ) { elementy[ tab[ i ][ j ] ] ++; ilosc++; } else elementy[ tab[ i ][ j ] ] ++; } } wynik2 += ilosc; if( maxi < ilosc ) maxi = ilosc; for( int ile = 1; ile <=( n - k ); ile++ ) { for( int j = 0; j < k; j++ ) { elementy[ tab[ j ][ ile - 1 ] ] --; if( elementy[ tab[ j ][ ile - 1 ] ] == 0 ) ilosc--; if( elementy[ tab[ j ][ ile + k - 1 ] ] == 0 ) { elementy[ tab[ j ][ ile + k - 1 ] ] ++; ilosc++; } else elementy[ tab[ j ][ ile + k - 1 ] ] ++; } wynik2 += ilosc; if( maxi < ilosc ) maxi = ilosc; } } } cout << maxi << " " << wynik2; return 0; }
|
|
pekfos |
» 2017-11-11 20:13:27 Czy wszystkie odwołania do tablic są poprawne? W szczególności do elementy. |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 20:25:03 Wydaje mi się, że tak, na danych, które testowałem największy tab był równy tylko 5. Dane w tab też wpisywane były poprawnie. |
|
mateczek |
» 2017-11-11 20:26:01 odpal debuger i testuj !!!
|
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 20:36:27 debuger przechodzi bez błędów |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 20:39:08 Zauważyłem, że gdy zadeklarowałem tab jako int tab [k][m]; to już program działa poprawnie i się zakańcza, dlaczego poprzedni sposób nie działał? Chciałbym z niego skorzystać. |
|
« 1 » |