ABA


"הקצאת דינמית למערך דו מימדי בשפת C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15224 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15224
evi 
חבר מתאריך 31.3.02
635 הודעות
   17:43   13.03.09   
אל הפורום  
  הקצאת דינמית למערך דו מימדי בשפת C  
 
האם יש דרך להקצות דינמית מערך דו מימדי מבלי להשתמש בלולאה ?

תודה מראש.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  רקורסיה? אבל למה שתרצה לעשות את זה? עידן_הכלי 13.03.09 17:48 1
     רקורסיה לא פותרת לי את הבעיה.. evi  13.03.09 17:59 2
  לא יודע ספציפית בנוגע לשפת C ronen333  13.03.09 19:21 3
  תודה רבה לכם.. evi  14.03.09 08:53 4
  יש שתי גישות: TTAsnn 14.03.09 15:04 5
     תודה רבה.. evi  14.03.09 20:34 6

       
עידן_הכלי

   17:48   13.03.09   
אל הפורום  
  1. רקורסיה? אבל למה שתרצה לעשות את זה?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
evi 
חבר מתאריך 31.3.02
635 הודעות
   17:59   13.03.09   
אל הפורום  
  2. רקורסיה לא פותרת לי את הבעיה..  
בתגובה להודעה מספר 1
 
אם יש לי גודל אחד ידוע מראש, יש אפשרות כזו ?
(להגדיר ללא לולאה)

תודה רבה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   19:21   13.03.09   
אל הפורום  
  3. לא יודע ספציפית בנוגע לשפת C  
בתגובה להודעה מספר 0
 
   אבל אין לך אפשרות לעשות מערך דינאמי.
תצתרך ליצור מבנה נתונים כזה בעצמך, או להשתמש באחד מוכן.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
evi 
חבר מתאריך 31.3.02
635 הודעות
   08:53   14.03.09   
אל הפורום  
  4. תודה רבה לכם..  
בתגובה להודעה מספר 0
 
יש לי תרגיל בתקשורת לכתוב פרוטוקול העברת קבצים פשוט מעל UDP
ואני צריך לממש חלון הזזה, שגודל מקסימלי של הודעה הוא 1K,
אבל אני לא יודע מה יהיה החלון בזמן קומפילציה (משום שזה פרמטר של
המשתמש).

לכן רציתי להגדיר מערך דו מימדי של X*1K (כאשר X הוא גודל החלון)

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

תודה רבה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TTAsnn

   15:04   14.03.09   
אל הפורום  
  5. יש שתי גישות:  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 14.03.09 בשעה 15:05 בברכה, TTAsnn
 
האחת נכונה וקצת מכוערת, השניה לא נכונה וקצת פחות מכוערת אבל עדיין מכוערת

בכל מקרה, השיטה הראשונה:
נניח ש n זה השורות ו m זה העמודות, אז:
int a[n][m];
הופך להיות
int *a = malloc(n*m *sizeof(int));
כאשר גישה לכל תא היא ככה:
a[i][j] הופך להיות:
a[i* m + j]

ויש את השיטה הלא נכונה (לדעתי)
והיא:
int **a = malloc(n *sizeof(int *));
for (i=0;i<n;i++) a[i] = malloc(m *sizeof(int));

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
evi 
חבר מתאריך 31.3.02
635 הודעות
   20:34   14.03.09   
אל הפורום  
  6. תודה רבה..  
בתגובה להודעה מספר 5
 
את האמת עשיתי הקצאה כזו אבל לא ידעתי איך לפנות אל התאים
אז ירדתי מזה.

אני אבדוק את זה.

שוב, תודה רבה לכולם.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net