מערך דו ממדי

Blase

New member
מערך דו ממדי

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

בהנחה שבאלכסון ראשי הכוונה היא לאלכסון מהפינה השמאלית העליונה לימנית התחתונה: צריך ליצור לולאה שעוברת:
(0,1) -> (1, 2) -> (2, 3) ->...-> (n-1, n)​
אני בטוח שתמצא/י את הדרך למימוש של זה.
 

maverick 42

New member
לגבי השאלה הראשונה

4 לולאות: אחת שרצה מ (0,0) עד ל (0,N), אחת מ (0,0) ל (O,N), אחת מ (N,0) ל (N,N) ואחת מ (O,N) ל (N,N).
 
נסיון

לראשון - אפשר גם לולאה אחת שרצה מ1 עד אן מינוס שתיים.. והנה קטע קוד גאווה קצר for (i=0; i<n-1; i++) sum=sum+a[0]+a[0]+a[n-1]+a[n-1]; ואז לסכום אתה מוסיף את ארבעת האיברים של האלכסונים.. לשני - לולאה אחת מאפס עד אן מינוס אחד.. (הרי איברי האלכסון הם אפס-אפס, אחד-אחד... וכך הלאה..) אולי יש פתרונות יותר טובים, אבל אלה מה שעלו לי לראש כרגע.. בהצלחה
 

maverick 42

New member
אני מסכים, אבל...

אני מסכים שזה הרבה יותר אלגנטי להריץ לולאת for אחת ולהוציא ממנה את ה N-ים המתאימים, אבל למה עד N-1? הרי אם תריץ לולאה מ 1 עד N זה אמור לרוץ סבבה על כל האיברים המתאימים...
אולי אני מפספס פה משהו ויוצא ממש
 
האיברים האלכסוניים יחושבו פעמיים..

אם תרוץ עד קטן מאן (כלומר עד אן מינוס אחד) אז הלולאה תחשב פעמיים את a[n-1][n-1] כי האינדקס של הלולאה בסופו של דבר יהיה אן מינוס אחד אז הקריאה a[n-1] תהיה זהה ל a[n-1] ואז האיבר יחושב פעמיים.. אפשר אחרי זה לחסר אותו.. אבל אני מעדיף לא להחשיב אותו מהתחלה..
 
למעלה