מדעי המחשב

srulikbd

New member
מדעי המחשב

חידה דיי מוכרת-איך ניתן להחליף בין שני תאים בלי להשתמש במשתנה עזר-למשל להחליף בין ערך משתנה A לערך משתנה B בלי להשתמש במשתנה עזר 1 או יותר...עכשיו, יש שיטת עבודה כללית להחלפה בין N משתנים, לכל קומבינצייה אפשרית?
 

בסג

New member
מזותומרת?

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

TheRedEye

New member
בודקים גדול קטן

אם A גדול אז B מקבל את A-B, ואז A מקבל את A-B, ואז B מקבל את A+B אם B גדול אז הכול הפוך יש מבין?
 

ש ב ו ז

New member
להחליף בין מי ל מי???

מה זאת אומרת להחליף בין N משתנים ? איך להחליף?
 

AlonGG

New member
לא עובד...

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

TheRedEye

New member
כע זה די פשוט..

זה שימושי תמיד בפסקל הייתי משתמש בזה
 

בסג

New member
לא תמיד עובד

אם יש לך גם מספרים שליליים. "אם A גדול אז B מקבל את A-B, ואז A מקבל את A-B, ואז B מקבל את A+B" ניקח, לצורך העניין signed char (טווח: מינוס 128 עד 127), A=127 B=-128 לפי האלגוריתם B=A-B כלומר B=255 שזה מחוץ לתחום. אבל, אם גלישה לא גורמת להפסקת התכנית, בפועל בסוף יהיו תוצאות נכונות, אאל"ט.
 

srulikbd

New member
../images/Emo127.gif עכשיו תחשוב על שלושה משתנים

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

בסג

New member
מהי הבעיה?

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

srulikbd

New member
למשל

אני רוצה שתחליף לי בין הערכים של חמישה תאים A,B,C,D,E, כך ש:B=A,C=B,D=C,E=D,A=E. כלומר כל איבר שווה הלאיבר שקדם לו...מסיטים ימינה פשוט...
 

בסג

New member
אז...

מפעילים את האלגוריתם של החלפת 2 משתנים על: B וA C וA D וA E וA
 

srulikbd

New member
יפה אבל מה עם מקרים לא נעימים

כל כך כמו A B C D E C E A B D ?
 
למעלה