Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program wypisuje wynik, lecz nie zakańcza się.

Ostatnio zmodyfikowano 2017-11-11 20:39
Autor Wiadomość
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

C/C++
cout << maxi << " " << wynik2;

lecz wisi w konsoli i nie chce się zakończyć.

Oto kod:

C/C++
#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;
}
P-166781
pekfos
» 2017-11-11 20:13:27
Czy wszystkie odwołania do tablic są poprawne? W szczególności do elementy.
P-166783
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.
P-166787
mateczek
» 2017-11-11 20:26:01
odpal debuger i testuj !!!
P-166788
Qabrix
Temat założony przez niniejszego użytkownika
» 2017-11-11 20:36:27
debuger przechodzi bez błędów
P-166791
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ć.
P-166792
« 1 »
  Strona 1 z 1