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
» 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ą.
P-166752
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.
C/C++
#include <iostream>
#include <vector>
#include <cassert>
using namespace std;


int main()
{
    int m, n, k, x, licznik, odtabeli;
    licznik = odtabeli = 0;
    //plik >> m >> n >> k;
    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
P-166757
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.
P-166766
1 « 2 »
Poprzednia strona Strona 2 z 2