Roki Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 Jak zrobić coś takiego, mam sobie tablice np. a[1] = 1 a[2] = 1 a[3] = 1 a[4] = 2 I w stepie(oczywiście tablica jest większa), chce zrobic, tak: GML if a[liczba] = a[liczba]+1 and a[liczba] = a[liczba]+2 { a[liczba] = random(5) } Tylko ze jesli liczba losowa będzie taka sama, jak na początku, to już jej nie zmieni, więc jak powtarzać taki proces w nieskończoność, dopóki 3 liczby koło siebie w tablicy będą inne? Tablica jest dosyć spora. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 GML if a[liczba] = a[liczba]+1 and a[liczba] = a[liczba]+2 { a[liczba] = random(5) }ten kod się nigdy nie wykona bo nie ma sensu (jeżeli a=a+1...) chyba chodziło o GML if a[liczba] = a[liczba+1] and a[liczba] = a[liczba+2] { a[liczba] = random(5) } jeżeli tak to: E: Coś popętliłem :( E2: Już wiem co zaraz poprawię E3: też źle E4: GML for (i = 0; i < wielkosc_tablicy; ) { a = random(5); abc=0; for (j = 0; j < i; j++) { if (a[j] == a) { abc= 1; break; } } if (abc!=1) i++; } na tej samej zasadzie co 1 tyle żę z mniejszą liczbą pętli Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bluks Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 Dajesz to w stepie, a nie w create. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 taki proces można powtarzac w nieskonczonosc w pętli while while( 1 ) { if( a[liczba] == a[liczba+1] ) and( a[liczba] == a[liczba+2] ){ a[liczba] = random(5); } else{ break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 taki proces można powtarzac w nieskonczonosc w pętli while while( 1 ) { if( a[liczba] == a[liczba+1] ) and( a[liczba] == a[liczba+2] ){ a[liczba] = random(5); } else{ break; } } po pierwsze- blokuje program. po drugie jak ma tablicę o wielkości 1000 to sobie może wpisywać... tu masz mój poprawiony kod: GML for (i = 0; i < wielkosc_tablicy; ) { a = random(5); abc=0; for (j = 0; j < i; j++) { if (a[j] == a) { abc= 1; break; } } if (abc!=1) i++; } random musi być większy niż tablica Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 moje while blokuje tak samo program jak twoje for wiec nie wiem o co Ci chodzi ;p w każdym razie: i++ , sorki ale GM to nie c++ i takie coś tu nie zadziała :) Po za tym twój sie zapętla w nieskonczonosc :D bierzemy a[0(i=0)] i porownojemy z a[0(j=0)] w zwiazku z tym musza byc identyczne wiec program przerywa 2 pętle for ale nie dodaje do "i" z pierwszej pętli i tak w kołko GML b=0; while( b<rozmiar_tablicy ) { c=0; for(c=0;c<rozmiar_tablicy;) { if( b!=c )&&( a==a[c] ) { a=random(5); } else{ c+=1; } } b+=1; } Ten kod o ile nie ma nigdzie błędu powinien sprawic by nie powtorzyla sie żadna wartosc w tej tablicy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 w każdym razie: i++ , sorki ale GM to nie c++ i takie coś tu nie zadziała kompiluje w vc bo gm-a nie mam, a o tym zawsze zapomne :P gdzie mój stopuje program? GML for (i = 0; i < 50; )//rozpoczynamy pętle która ma max wymiar 50 { a = random(89);//a=randomowi abc=0;//zmienna pomocnicza zaś wynosi 0. for (j = 0; j < i; j++)//pętla od 0 do aktualnego i { if (a[j] == a)//jeżeli a[j]=a { abc= 1;//zmienna pomocnicza wynosi 1 break;//przerywamy tą pętlę. } } if (abc!=1) i++;//jeżeli abc!=1(czyli jest =0) czyli nie wykrył równości to sprawdzamy następną część tablicy. Jeżeli =1 to cały cykl od nowa } e: jeżeli nie chcesz aby losował z góry to dajesz a=random(86) na początek pierwszego if-a Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 no tak i wykonaj sobie pierwsze okrążenie w tym kodzie i=0 a= random( np 3) a[0]= random( np 3) abc=0 j=0 a[j]=3 a[0]=3 a[0] juz wyznaczylismy i jest to jakas losowa liczba wyznaczona za pierwszym razem( tutaj dla przykładu 3 ) porównujemy a[0] i a[0] jak sie domyslasz wynik będzie pozytywny więc abc=1 i wychodzimy z fora. jako ze a=1 to nie zwiekszy sie "i" wiec zabawe zaczynamy od nowa znowu dla a[0] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 Roki, a w tablicy są liczby całkowite czy też zmiennoprzecinkowe? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 no tak i wykonaj sobie pierwsze okrążenie w tym kodzie i=0 a= random( np 3) a[0]= random( np 3) abc=0 j=0 a[j]=3 a[0]=3 a[0] juz wyznaczylismy i jest to jakas losowa liczba wyznaczona za pierwszym razem( tutaj dla przykładu 3 ) porównujemy a[0] i a[0] jak sie domyslasz wynik będzie pozytywny więc abc=1 i wychodzimy z fora. jako ze a=1 to nie zwiekszy sie "i" wiec zabawe zaczynamy od nowa znowu dla a[0] zauważ szczególik for (j = 0; j < i; j++) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 a faktycznie, zwracam honor :) Jednak w twoim kodzie generuje mu nowe liczby a co jeśli chce porownac stare bądź wczytane skadś liczby? E: ok zauwazylem twoj edit już :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 18 Sierpnia 2010 Udostępnij Opublikowano 18 Sierpnia 2010 Jednak w twoim kodzie generuje mu nowe liczby a co jeśli chce porownac stare bądź wczytane skadś liczby? e: jeżeli nie chcesz aby losował z góry to dajesz a=random(86) na początek pierwszego if-a Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się