מערך

pitbol3

New member
מערך

אהלן,

מצ"ב קובץ שבו שאלה. חשבתי על דרך פתרון ומצאתי דרך שהיא לטעמי קצת עקומה.

הדרך: צריך לסובב את המערך מהחלק החיצוני לפנימי.
ניצור מערך דינאמי (temp) בגודל size שיחושב לפי כמות המספרים שמאיישים את החלק החיצוני. נכניס למערך החדש את האיברים באופן כזה ש temp[0] =matr[0][1] qq
temp[1]=matr[0][0] qq וכך הלאה, כך שבעצם המערך temp יכיל כבר את השינוי ואז נכניס אותו למערך matr באופן הבא: temp[0]=matr[0][0] qq וכך נגד כיוון השעון.

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

הגדרות: להגדיר בהתחלה אינדקס row=0 ובסיום החלק החיצוני להעלות את ה row ב1 ולהוריד את N ב 1. לבצע את האלגוריתם עד ש row=N .

אני בטוח שמי שכתב את השאלה לא התכוון לכל הבלאגן הזה...מקווה שמישהו כאן יעלה על משהו יותר חכם ויעיל יותר...תודה :)
 

פרסאוס

New member
אלא אם הבנתי לא נכון, יש שני חלקים לכל מטריצה

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

לא לשכוח להוסיף את האיבר הראשון בסוף
 

pitbol3

New member
טעות קלה

מדובר על לסובב את כל ההיקיפים....

הפתרון שלך דומה מאוד לפתרון שלי... אז זה באמת הפתרון השגרתי?
 

pitbol3

New member
אממ

נניח עבור N=10 יהיו יותר משני חלקים חיצוניים...
 

פרסאוס

New member
איך יכול להיות יותר מחלק חיצוני אחד?

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

pitbol3

New member
הכוונה היא

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


בכל מקרה הצלחתי כבר, תודה :)
 

nocgod

New member
למען האמת

פתרתי שאלה דומה עם אחד החניכים שלי לא מזמן. חיפשתי דרך מתחכמת לעשות את זה ובזבזתי זמן יקר, כשבתחלס הפיתרון היה כל כך פשוט :)
אתה שומר את האיבר ה [0][0] במשתנה נקרא לו carry (נשא)
אתה פשוט עובר תא תא בצלע העליונה של המטריצה ומעתיק את האיבר הנשא לתא השכן ואת תוכן התא השכן לנשא וככה עד שאתה מגיע לקצה הצלע העליונה, את אותה הפעולה אתה ממשיך לעשות עם הנשא עבור הצלעות האחרות (פעם המהלך ירידה למטה, פעם במהלך דחיפה של האיברים שמאלה ופעם למעלה)
כל התהליך הזה נשמע מסובך בפועל זה 4 לולאות for אחת אחרי השניה....
 

pitbol3

New member
תודה

זה מאוד דומה למה שעשיתי אבל בהחלט יעיל יותר :)
 
למעלה