מערך דו מימדי דינמי

boo26

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

אני צריכה לקלוט N וקטורים באורך M כמובן ש N וM אינם ידועים לי ועליי לבנות מערך (דינמי) עבורם מישהו יודע איך אני אמורה לעשות זאת ישנה מגבלה על מס הוקטורים ואורכם 64 ביט ועוד יש להוסיף כי אני מקבלת את הוקטורים כמספרים בינארים
 

boo26

New member
שפת C++

השפה שבה אני צריכה את המערך הדינמי היא בשפת C++
 

lala82

New member
איך???

אני יודעת שאופרטור NEW משמש להקצאה דינמית אבל אני לא זוכרת איך אני מקצה במערך דו מימדי N*M
 

vinney

Well-known member
מה זה מערך דו מימדי?

איך הוא מיוצג בזכרון? רמז - על ידי מערך חד-מימדי.
 

yuran

New member
זה לא מערך דו מימדי

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

vinney

Well-known member
מערך של מערכים זה מערך דו מימדי

(או X+1 מימדי אם זה מערך של מערכים ממימד X) ואם זה ברור לך שקל לייצג אותו בתור מערך חד מימדי, אז במה בעצם אתה מתקשה?
 

yuran

New member
אני לא מתקשה

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

gmorphus

New member
הוא התכוון למה שהוא אמר...

גם מערך דו מימדי הוא מערך חד מימדי לכל דבר ועניין.
 

vinney

Well-known member
זה לא בהכרח נכון

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

lala82

New member
הבהרת השאלה

הבעיה היא שאת ה-N שלי (כמות המספרים שאני מקבלת מהמשתמש) אני לא יודעת ואת ה-M שלי (אורכו של כל מספר-בינארי) אני גם כן לא יודעת אך אני יודעת שבכל המספרים יש את אותו האורך
 

vinney

Well-known member
את יודעת

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

orennahum

New member
שתי אפשרויות

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