עבור לתוכן

בעיה במערכים בפסקל

Featured Replies

פורסם

אני יוצר מערך של INTEGER ולכל תא במערך אני עושה RANDOM הבעיה שאני לא רוצה שיהיה אותו מספר פעמיים במערך איך אני אומר לרנדום לא ליצור אותו מספר פעמיים?

פורסם

אתה לא יכול להגיד לו לא ליצור אותו מספר פעמיים

מה שאתה יכול לעשות זה עבור כל מספר שהוא יוצר לבדוק אם הוא נמצא כבר במערך, אם לא תוסיף אותו ואם כן תיצור מספר חדש ותבדוק שוב.

פורסם

הינה קטע תוכנית שיפתור לך את הבעיה...

תבדוק כי אני רשמתי את זה.

i:=1;

while i<=n do

begin

x:=a;

for j:= (i+1) to n do

begin

y:=a[J];

while x=y then

y:=random(maxint);

a[j]:=y;

end;

i:=i+1;

end;

n=מספר עיברים במערך

a= שם מערך

פורסם

אם אני בודק את התא השני ומוצא שהערך של התא הראשון שווה לו, המחשב מגריל לי מספר אקראי. אבל אם הערך האקראי שיתקבל עכשיו שווה לערך הקודם, התוכנית לא תגלה זאת, כי היא לא בודקת את הערך הזה שוב..

אני חושב שתיקון כזה אמור לפתור את הבעהי...


while (x=y) And (a[j]<>y) do
Begin
y:=random(maxint);
End;

וד"א במקום

for j:= (i+1) to n do

צריך לרשום


for j:= (i+1) to n-1 do

(או שאפשר לעשות את השינוי בWhile), כדי למנוע מצב שבו ייבדק a[j] שנמצא מחוץ לגבול של המערך.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים