program wywala std::ios_base:: failure
Ostatnio zmodyfikowano 2017-11-11 19:23
Qabrix Temat założony przez niniejszego użytkownika |
program wywala std::ios_base:: failure » 2017-11-11 14:47:39 Witam, mam problem, mianowicie mój program wywala błąd std::ios_base:: failure przy 2011 wczytaniu "x". Czym jest to spowodowane? Dane wprowadzane do programu to: m=3000; n=3000; k=1000; x to losowe liczby z przedziału od zera do 6000 wypisane w wierszach o długości 3000(m) każdy, takich wierszy jest 3000(n), na razie jednak mój program skupia się na 1000(wierszach) z nich. Program ma wpisywać x do podtablic elementy o wielkości(k) 1000 na 1000(k) gdzie tablice te mają zakres na naszych wierszach: pierwsza podtablica od 1 wartosci wiersza do 1000, druga od 2 do 1001, trzecia od 3 do 1002 etc. #include <iostream> #include <vector> #include <fstream> #include <stdio.h> #include <string.h> using namespace std;
int main() { fstream plik; plik.open( "c:/c++/test.txt" ); int m, n, k, x, licznik, odtabeli; licznik = odtabeli = 0; plik >> m >> n >> k; 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 ]; int ilosc[( n - k + 1 ) ] = { 0 }; for( int wliczba = 0; wliczba < 3000000; wliczba++ ) { plik >> x; for( int ilosctabeli = odtabeli; ilosctabeli <= licznik; ilosctabeli++ ) { if( odtabeli ==( n - k ) ) { elementy[ odtabeli ][ ilosc[ odtabeli ] ] = x; ilosc[ odtabeli ] ++; } else { elementy[ ilosctabeli ][ ilosc[ ilosctabeli ] ] = x; ilosc[ ilosctabeli ] ++; } } if( licznik <( k - 1 + odtabeli ) ) licznik++; else { odtabeli++; licznik++; } if(( wliczba + 1 ) % n == 0 ) { licznik = odtabeli = 0; } } return 0; }
|
|
pekfos |
» 2017-11-11 15:12:57 Dane w pliku są poprawne? Wszystkie odwołania do tablic są poprawne? |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 15:19:54 Tak wszystko poprawne, dla mniejszych liczb działa bez zarzutu |
|
pekfos |
» 2017-11-11 15:24:59 Jakich mniejszych liczb? |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 15:29:20 m=100; n=100; k=10;
x nadal losowe z przedziału takiego samego |
|
pekfos |
» 2017-11-11 15:55:39 Plik też jest mniejszy, czy tylko podajesz do programu mniejsze wartości? |
|
Qabrix Temat założony przez niniejszego użytkownika |
» 2017-11-11 15:57:29 mniejsze wartości, rozmiar pliku jest taki sam. |
|
pekfos |
» 2017-11-11 16:05:40 Na pewno błąd zachodzi przy 2011. odczycie? Nie chodzi o wyczerpanie pliku? 3000x3000 to 9000000 elementów, nie 3000000. |
|
« 1 » 2 |