נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: בעיה קטנה[או גדולה?] ב C

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
אבידור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 December 2008 בשעה 03:45 | IP רשוּם
ציטוט אבידור

כתבתי קוד להקצאת זיכרון דינאמי של מערך דו מימדי.
הקוד לא עבד לי, שברתי ת'ראש שעה שלמה ולבסוף מצאתי קוד מסויים
שהביאו לי לפני שנה בפורום הזה. אז לקחתי אותו והופה - פועל!
עשיתי חיפושים רבים על השינויים בין הקודים שלנו כשלהפתעתי, השינוי היחידי היה למעשה
איך אני מקדם את ה i שלי בלולאת ה for. האם זה יהיה i++ או ++i ?

הנה הקוד להקצאה.. זה שפועל:
קוד:

byte **makeTwoDimensionalArray(unsigned int height,unsigned int width)
{
     unsigned int i;
     byte **array;
    
     array=(byte **)malloc(sizeof(byte*)*height);
     if(array==NULL) return NULL;
     for(i=0;i<height;++i)
     {
            array[i]=(byte *)malloc(width*sizeof(byte));
             if(array[i]==NULL)
             {
                                freeTwoDimensionalArray(array,i);
                                return NULL;
             }
     }
     return array;
}


והנה זה שלא פועל
קוד:

byte **makeTwoDimensionalArray(unsigned int height,unsigned int width)
{
     unsigned int i;
     byte **array;
    
     array=(byte **)malloc(sizeof(byte*)*height);
     if(array==NULL) return NULL;
     for(i=0;i<height;i++i)
     {
            array[i]=(byte *)malloc(width*sizeof(byte));
             if(array[i]==NULL)
             {
                                freeTwoDimensionalArray(array,i);
                                return NULL;
             }
     }
     return array;
}

הקוד לא פועל בVISUAL C++ ובDEV CPP. לפחות בפרוייקט שאני עושה (שהוא לא משהו מסובך שעלול להשפיע על התוצאות שמה)

מה קורה פה? חשבתי שזה לא משנה האם אני עושה pre-increment או post-increment ב FOR. (להזכירכם pre/post זה הצורות של קידום המשתנה .. כלומר האם i++ או ++i )

אנא עזרו!
חזרה לתחילת העמוד הצג את כרטיס החבר של אבידור חפש הודעות אחרות של אבידור בקר בדף הבית של אבידור
 
אבידור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 December 2008 בשעה 03:46 | IP רשוּם
ציטוט אבידור

אני מצטער, בטעות שכחתי למחוק את ה i בקוד השני , הנה הקוד שלא פועל:
קוד:

byte **makeTwoDimensionalArray(unsigned int height,unsigned int width)
{
     unsigned int i;
     byte **array;
    
     array=(byte **)malloc(sizeof(byte*)*height);
     if(array==NULL) return NULL;
     for(i=0;i<height;i++)
     {
            array[i]=(byte *)malloc(width*sizeof(byte));
             if(array[i]==NULL)
             {
                                freeTwoDimensionalArray(array,i);
                                return NULL;
             }
     }
     return array;
}


שימו לב - השינוי היחדיי זה ה ++ שמה. (הסדר שלו)
חזרה לתחילת העמוד הצג את כרטיס החבר של אבידור חפש הודעות אחרות של אבידור בקר בדף הבית של אבידור
 
אבידור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 18 February 2009 בשעה 22:56 | IP רשוּם
ציטוט אבידור

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 19 February 2009 בשעה 09:25 | IP רשוּם
ציטוט גד

++ אחרי פרמטר: ביצוע הפקודה ולאחר מכן הגדלה
++ לפני פרמטר: הגדלה ולאחר מכן ביצוע הפקודה
חזרה לתחילת העמוד הצג את כרטיס החבר של גד חפש הודעות אחרות של גד בקר בדף הבית של גד
 
גרשון
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 19 February 2009
מדינה: Israel
משתמש: מנותק/ת
הודעות: 6
נשלח בתאריך: 19 February 2009 בשעה 22:22 | IP רשוּם
ציטוט גרשון

הקוד יעבוד בשני המקרים.

האם תוכל לפרט , מה לא עובד ?

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

 

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

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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