Program ... przestał działać
Ostatnio zmodyfikowano 2017-10-25 19:20
Corvette653 Temat założony przez niniejszego użytkownika |
Program ... przestał działać » 2017-10-25 18:58:15 Oto mój program: #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
bool czyzle( int wylosowane[], int los ) { for( int c = 0; c < 6; c++ ) { if( los == wylosowane[ c ] ) return true; } return false; }
bool czybylo( long long poprzednie[], int los ) { for( int c = 0; c < 14000; c++ ) { if( los == poprzednie[ c ] ) return true; } return false; }
int main() { srand( time( NULL ) ); int wynik = 0; long long poprzednie[ 14000000 ]; int wylosowane[ 6 ]; long long los = 0; do { do { for( int b = 0; b < 6; b++ ) { do { los =( rand() % 50 ) + 1; } while( czyzle( wylosowane, los ) == true ); wylosowane[ b ] = los; } los = wylosowane[ 5 ] * wylosowane[ 4 ] * wylosowane[ 3 ] * wylosowane[ 2 ] * wylosowane[ 1 ] * wylosowane[ 0 ]; } while( czybylo( poprzednie, los ) == true ); poprzednie[ wynik ] = los; cout << poprzednie[ wynik ]; wynik++; } while( wynik < 14000001 ); return 0; }
wypełnia on 14 mln zmiennych iloczynem 6 losowych liczb od 1 do 49 a następnie wypisuje te zmienne. gdy prubuje go uruchomić wyskakuje okno windows z napisem program przestał działać. pytanie rozumie się samo przez się co tutaj jest źle ktoś ma pomysł jak skrócić lub uprościć kod bardzo proszę pisać |
|
pekfos |
» 2017-10-25 19:13:54 long long poprzednie[ 14000000 ];
|
Za mnogo. std::vector < long long > poprzednie( 14000000 );
|
|
mateczek |
» 2017-10-25 19:17:22 nie ładuj tak wielkich tablic na stos!!! czy to na pewno dobry sposób ?? pytam bo mi to zalatuje totolotkiem :)?? 2*6 = 12 4*3 =12
|
|
ParseThisCode |
» 2017-10-25 19:20:27 Musisz zaalokować pamięć long long * poprzednie = new long long[ 14000000 ];
No i cout << poprzednie[ wynik ] << endl;
|
|
« 1 » |