עבור לתוכן

גלגולי מערך בפסקל

Featured Replies

פורסם

המורה שלי ביקש לעשות תרגיל כזה:

נתון מערך חד מימדי A.

צריך לגלגל את המספר הכי גדול במערך ימינה ואת המספר הכי קטן שמאלה לדוגמא:

נתון המערך:

2,7,9,12,54,0,18,54

אחרי הגלגולים הוא יראה כך:

54,2,7,9,12,18,54,0

המקסימום בצד שמאל והמינימום בצד ימין.

(ניתן להשתמש במערך עזר).

ביצעתי את התרגיל בדרך אחרת ופשוטה יותר(לדעתי לפחות).

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

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

גלגול זה למשל יש מערך:

2,7,9,12,54,0,18,54

אז אחרי גלגול אחד ימינה למשל הוא יראה כך: 54,2,7,9,12,54,0,18

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

פונקציות הגלגול הן פשוטות למדי:

procedure left1(var a:arr);
var
i:integer;
b:integer;
begin
b:=a[1];
for i:=1 to n-1 do
a[i]:=a[i+1];
a[n]:=b;
end;

procedure right1(var a:arr);
var
i:integer;
b:integer;
begin
b:=a[n];
for i:=n downto 2 do
a[i]:=a[i-1];
a[1]:=b;
end;

אז איך אני יכול לפתור את התרגיל שהבאתי למעלה בעזרת הגלגולים?

פורסם

מתי הוא רוצה שתשתמש בזה? כשאתה מחפש את באיבר הגדול ביותר? כשאתה מכניס למערך החדש?

פורסם

נראה לי שלפחות אחד מהשלושה נכון:

- אני לא הבנתי את התרגיל, לפי מה שסיפרת,

- אתה לא הבנת את המורה שלך,

- המורה שלך לא מבינ/ה מהחיים שלו/ה.

לפי מה שאתה מתאר, "גלגול" זה הזזה ציקלית (אתה לוקח את האיבר הכי ימני ו"דוחף" אותו משמאל, או ההיפך).

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

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

יכול להיות ש"גלגול" זה החלפה בין שני תאים סמוכים?

פורסם
  • מחבר

מתי הוא רוצה שתשתמש בזה? כשאתה מחפש את באיבר הגדול ביותר? כשאתה מכניס למערך החדש?

הוא רוצה שאני אשתמש בזה ליצירת המערך החדש כלומר המוזז כבר.

כאילו, אני צריך להזיז ימינה את הקטן ביותר ושמאלה את הגדול ביותר בעזרת הפונקציות שנבאתי(פונקציות הגלגול).

נראה לי שלפחות אחד מהשלושה נכון:

- אני לא הבנתי את התרגיל, לפי מה שסיפרת,

- אתה לא הבנת את המורה שלך,

- המורה שלך לא מבינ/ה מהחיים שלו/ה.

לפי מה שאתה מתאר, "גלגול" זה הזזה ציקלית (אתה לוקח את האיבר הכי ימני ו"דוחף" אותו משמאל, או ההיפך).

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

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

יכול להיות ש"גלגול" זה החלפה בין שני תאים סמוכים?

לא, גלגול זה בדיוק מה שהסברתי.

כמו שמתואר בפונקציות הגלגול שכתבתי.

פורסם

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

פורסם
  • מחבר

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

OK, תודה לכולכם על עזרתכם!

פורסם

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

לדוגמא, לסובב את המערך N פעמים(במקום לרוץ עליו עם איטרטור כלשהו) ולמצוא את האיבר הגדול ביותר בצורה הזו.

פורסם
  • מחבר

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

לדוגמא, לסובב את המערך N פעמים(במקום לרוץ עליו עם איטרטור כלשהו) ולמצוא את האיבר הגדול ביותר בצורה הזו.

לא, הוא רוצה שנשתמש בזה לא כמו שמשתמשים בפונקציות של תור אלא פשוט להשתמש להשתמש בגלגול בשביל לפתור את התרגיל.

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

פורסם

ואם תשנה את N?

פורסם
  • מחבר

ואם תשנה את N?

אתה יכול לשים ב N מה שבא לך, כלומר N זה גודל המערך.

פורסם

אם תסובב רק חלק מהאיברים במערך, לא את כולו.

עריכה: למשל, עבור N=2, זה יחליף בין 2 האיברים הראשונים.

ארכיון

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

דיונים חדשים