Skocz do zawartości
ulaz

Problem z Pascalem i funkcją random

Rekomendowane odpowiedzi

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 :(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ą :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...