program wywala std::ios_base:: failure
Ostatnio zmodyfikowano 2017-11-11 19:23
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 17:27:17 Sprawdziłem wstawiając couta wypisującego wliczbe, program wywala przy wypisaniu 2011. Potrzebuję wpisać tylko 1000 pierwszych wierszy, stąd też 3000000 zamiast 9000000 w pętli. Pierwszy raz spotkałem się z tym błędem :/ Właśnie głowie się co może być przyczyną. |
|
pekfos |
» 2017-11-11 18:44:47 Wszystkie odwołania do tablic są poprawne? |
Tak wszystko poprawne, dla mniejszych liczb działa bez zarzutu |
Błąd, nie są poprawne. #include <iostream> #include <vector> #include <cassert> using namespace std;
int main() { int m, n, k, x, licznik, odtabeli; licznik = odtabeli = 0; m = n = 3000; k = 1000; x = 0; unsigned long long ** elementy = new unsigned long long *[( n - k + 1 ) ]; for( int i = 0; i <( n - k + 1 ); i++ ) elementy[ i ] = new unsigned long long[ 6000 ]; std::vector < int > ilosc( n - k + 1 ); for( int wliczba = 0; wliczba < 3000000; wliczba++ ) { std::cout << wliczba << ' '; x =( x + 1 ) % 6000; for( int ilosctabeli = odtabeli; ilosctabeli <= licznik; ilosctabeli++ ) { if( odtabeli ==( n - k ) ) { assert( odtabeli < n - k + 1 ); assert( ilosc[ odtabeli ] < 6000 ); elementy[ odtabeli ][ ilosc[ odtabeli ] ] = x; ilosc[ odtabeli ] ++; } else { assert( ilosctabeli < n - k + 1 ); assert( ilosc[ ilosctabeli ] < 6000 ); elementy[ ilosctabeli ][ ilosc[ ilosctabeli ] ] = x; ilosc[ ilosctabeli ] ++; } } if( licznik <( k - 1 + odtabeli ) ) licznik++; else { odtabeli++; licznik++; } if(( wliczba + 1 ) % n == 0 ) { licznik = odtabeli = 0; } } } File: a.cpp, Line 39
Expression: ilosctabeli < n - k + 1 |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 19:23:10 O cholibka, dzięki, nie przewidziałem tego, własnie z racji tego, że na mniejszych liczbach było pozornie ok. Dzięki, zamykam. |
|
1 « 2 » |