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

program wywala std::ios_base:: failure

Ostatnio zmodyfikowano 2017-11-11 19:23
Autor Wiadomość
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.




C/C++
#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;
}
P-166729
pekfos
» 2017-11-11 15:12:57
Dane w pliku są poprawne? Wszystkie odwołania do tablic są poprawne?
P-166734
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
P-166736
pekfos
» 2017-11-11 15:24:59
Jakich mniejszych liczb?
P-166738
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
P-166739
pekfos
» 2017-11-11 15:55:39
Plik też jest mniejszy, czy tylko podajesz do programu mniejsze wartości?
P-166743
Qabrix
Temat założony przez niniejszego użytkownika
» 2017-11-11 15:57:29
mniejsze wartości, rozmiar pliku jest taki sam.
P-166744
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.
P-166746
« 1 » 2
  Strona 1 z 2 Następna strona