ulaz Opublikowano 18 Lutego 2004 Zgłoś Opublikowano 18 Lutego 2004 Moze mi ktos wytumaczyć dlaczego ponizszy program daje takie same wyniki, dopiero się ucze programować więc wszelka pomoc bedzie mi pomocna z góry dzieki :) uses Crt; function rzut(LKostek,Kostka,dodatek:byte):byte; var pomoc : array[1..16] of byte; i,x : byte; begin x := 0; i := 0; for i := 1 to 16 do pomoc := 0; randomize; for i := 1 to LKostek do begin randomize; pomoc := random(kostka + 1); if pomoc = 0 then pomoc := 1; x := x + pomoc; end; rzut := x + dodatek; end; begin writeln(rzut(1,6,0)); { // te wyniki są takie same, a nie powinny być } writeln(rzut(1,6,0)); readln; end. chociaz lepsze są wyniki jak funkcja rzut wygląda tak function rzut(LKostek,Kostka,dodatek:byte):byte; var pomoc : array[1..16] of byte; i,x : byte; begin x := 0; i := 0; for i := 1 to 16 do pomoc := 0; randomize; repeat i := i + 1; randomize; pomoc := random(kostka + 1); if pomoc = 0 then pomoc := 1; x := x + pomoc; until i = LKostek; rzut := x + dodatek; end; wtedy wyskakije mi niebieski ekranie w windzie, albo pisze cos o bledzie o niedozwolonej funcji pod adresem .... i ze kazdym razem jest inny adres. Co dziwne kompilator nie zglasza zadnego bledu a program nie dziala :( Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
czara Opublikowano 19 Lutego 2004 Zgłoś Opublikowano 19 Lutego 2004 Moze mi ktos wytumaczyć dlaczego ponizszy program daje takie same wyniki, dopiero się ucze programować więc wszelka pomoc bedzie mi pomocna z góry dzieki :) uses Crt;function rzut(LKostek,Kostka,dodatek:byte):byte; var pomoc : array[1..16] of byte; i,x : byte; begin x := 0; i := 0; for i := 1 to 16 do pomoc[i] := 0; randomize; for i := 1 to LKostek do begin randomize; pomoc[i] := random(kostka + 1); if pomoc[i] = 0 then pomoc[i] := 1; x := x + pomoc[i]; end; rzut := x + dodatek; end;begin writeln(rzut(1,6,0)); { // te wyniki są takie same, a nie powinny być } writeln(rzut(1,6,0)); readln;end.chociaz lepsze są wyniki jak funkcja rzut wygląda takfunction rzut(LKostek,Kostka,dodatek:byte):byte; var pomoc : array[1..16] of byte; i,x : byte; begin x := 0; i := 0; for i := 1 to 16 do pomoc[i] := 0; randomize; repeat i := i + 1; randomize; pomoc[i] := random(kostka + 1); if pomoc[i] = 0 then pomoc[i] := 1; x := x + pomoc[i]; until i = LKostek; rzut := x + dodatek; end;wtedy wyskakije mi niebieski ekranie w windzie, albo pisze cos o bledzie o niedozwolonej funcji pod adresem .... i ze kazdym razem jest inny adres. Co dziwne kompilator nie zglasza zadnego bledu a program nie dziala :(hmmm nie rozumiem sposobu jakim ty chcesz ten program zrobic :/ co to za zmienne dodatek pomoc jak mozna to zrobic krocej :) ja bym to zrobil tak function rzut(lkostek,kostka:byte):byte;vari,x : byte;beginclrscr;x := 0;for i := 1 to 16 dopomoc[i] := 0;randomize;for i := 1 to lkostek dobeginx:=random(kostka)+1;writeln(x);end;end;jesli chodzilo ci o cos innego to pisz bo moze zle zrozumialem ;) troche niewyspany jestem a zaraz jeszcze na uczelnie musze isc Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ulaz Opublikowano 19 Lutego 2004 Zgłoś Opublikowano 19 Lutego 2004 funkcja ta ma losowac rzut koscią do gry np. 1k6 albo 1k3, albo 1k4+1, problem w tym ze jak napisze w programie writeln(rzut(1,6,0)); writeln(rzut(1,6,0)); to wychodzą takie same wyniki, a nie powinny Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ulaz Opublikowano 19 Lutego 2004 Zgłoś Opublikowano 19 Lutego 2004 dobra juz wiem w czym problem, powinno wygladac to tak function rzut(LKostek,Kostka,dodatek:byte):byte; var pomoc : array[1..16] of byte; i,x : byte; begin x := 0; i := 0; for i := 1 to 16 do pomoc := 0; for i := 1 to LKostek do begin pomoc := random(kostka) + 1; x := x + pomoc; end; rzut := x + dodatek; end; poprostu randomize inicjuje sie tylko raz w programie poza petlą :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...