תיכנות\מתמטיקה מערכים חד ממדי למערך במימדים אחרים כפולות של 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תיכנות\מתמטיקה מערכים חד ממדי למערך במימדים אחרים כפולות של 2


lo_toda

Recommended Posts

מערך חד מימדי ל 2ו מידי אני יודע לדוגמה יש לי 1000 פרטים ...אני ממיר את זה ל 100*100 כאשר זה היה x+y*100

אורי מה קורה עם יש לי יותר מ 2 מידים נניח 4 מיימדים ?כמו חילוק של 1000 ? ל 4 מימדים ? ויותר ?איך מחשבים זה ?

אני קצת לא מבין את המטדולגיה ?

ברור שזה חד חד עריכי?

תודה לכל העונים ...אני מתחבט בזה די הרבה זמן.

קישור לתוכן
שתף באתרים אחרים

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

נניח יש לך שלושה מימדים:

int arr[A][B][C];

אז:

arr[i][j][k] => arr[k+j*C+i*(B*C)]

אם יש לך ארבעה:

int arr[A][B][C][D]

אז האינדקס הראשון כפול B*C*D, השני כפול C*D, השלישי כפול D.

וכן הלאה.

קישור לתוכן
שתף באתרים אחרים

א6ני מבין מה אתה כותב סבבה ...אני יבדוק את זה ...

בנוסף אין אני עושה הפוך ...מ מרחב רב ממדי ל מרחב חד מימדי ?

אני ממש מעריך את זה תודה ...

אני חייב להגיש שאתה ממש גאון שתפסתה את זה מייד ....את הקונספט אני מתקשה להבין ....

קישור לתוכן
שתף באתרים אחרים

לא תפסתי את זה מיד, אני פשוט יודע את זה כבר :)

ההסבר שנתתי לך הוא ממרחב רב מימדי לחד מימדי (לפרוש את המערך).

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

נניח שיש לך מערך (חד מימדי) בגודל A*B*C*D, ואתה רוצה לקפל אותו למערך תלת-מימדי במימדים,A,B,C,D, אז אתה בעצם רוצה להוציא מתוך כל אינדקס x למערך, אינדקסים i,j,k,l כך ש-(x = l+k*D+j*C*D+i*(B*C*D.

על מנת להוציא את l, אתה x%D.

על מנת להוציא את k, אתה x/D)%C).

על מנת להוציא את j, אתה x/(D*C))%B).

על מנת להוציא את j, אתה (x/(D*C*B.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...