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

Program ... przestał działać

Ostatnio zmodyfikowano 2017-10-25 19:20
Autor Wiadomość
Corvette653
Temat założony przez niniejszego użytkownika
Program ... przestał działać
» 2017-10-25 18:58:15
Oto mój program:
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

bool czyzle( int wylosowane[], int los ) // sprawdza czy liczba byla wylosowana wczesniej
{
   
    for( int c = 0; c < 6; c++ )
    {
        if( los == wylosowane[ c ] )
             return true;
       
    }
   
    return false;
}

bool czybylo( long long poprzednie[], int los ) // sprawdza czy kombinacja byla wylosowana wczesniej
{
    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 // wykonuje sie az wszystkie zmienne beda zapelnione
    {
       
        do // sprawdza czy kombinacja nie wystapila wczesniej
        {
           
            for( int b = 0; b < 6; b++ ) // powtarza sie 6 razy - tyle mamy wylosowac
            {
               
                do // sprawdza czy dana liczba nie wystapila wczesniej
                {
                   
                    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ć
P-166085
pekfos
» 2017-10-25 19:13:54
C/C++
long long poprzednie[ 14000000 ];
Za mnogo.
C/C++
std::vector < long long > poprzednie( 14000000 );
P-166087
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
P-166088
ParseThisCode
» 2017-10-25 19:20:27
Musisz zaalokować pamięć
C/C++
long long * poprzednie = new long long[ 14000000 ];
No i
C/C++
cout << poprzednie[ wynik ] << endl;
P-166089
« 1 »
  Strona 1 z 1