פורסם 2011 ביולי 2814 שנים מסיבות לא מובנות כשאני משתמש בה, התוכנית קורסת בזמן ריצה (או שאני מקבל שגיאה מוזרה מהvisual studio) אם אני לא מוסיף 1 לגודל המערך החדש.נגיד רציתי לעשות realloc למערך שהגודל החדש שלו יהיה 4, אם אני לא אתן לו 5 אני אקבל (ברוב המקרים, זה אפילו לא חד משמעי) איזה שגיאה מוזרה או קריסה.לאו דווקא מחרוזות, אפילו struct חדש שאני יוצר.לא שמתי לב בפעמים הקודמות, אבל עכשיו זה קרס כשנסיתי להקטין את המערך (להעיף את התאים הריקים)זה אמור לעבוד ככה? יש חלופה לפונקציה הזאת?עריכה : הוספתי תמונה של השגיאה הנוכחית. היא קופצת רק אם אני לא רושם בrealloc גודל שלפחות גדול ב1 מהמערך החדש. נסיתי לעשות project חדש אבל זה לא עזר[attachment deleted by admin]
פורסם 2011 ביולי 2814 שנים מחבר http://dl.dropbox.com/u/24303191/func2.txtקורס בפונקציה האחרונה בסוף בשורה של count+=1שאלה נוספת, מערך של סטרקטים שחוזר מפונקציה (חוזרת כתובת ההתחלה)אם אני עושה sizeof לכתובת ההתחלה של המערך אני מקבל את גודל הכתובת (4) ולא את גודל המערך, במה טעיתי?תודה
פורסם 2011 ביולי 2814 שנים לא ברור לי למה אתה עושה realloc בכל איטרציה של הלולאה ב-StrtoMonom.לשאלתך:אי אפשר להחזיר מערך מפונקציה. מה שחוזר למעשה הוא מצביע, וגודלו הוא אכן 4. אם מי שקרא לפונקציה צריך לדעת את הגודל של המערך, הוא חייב לקבל אותו בנפרד מהמערך.חוץ מזה, sizeof היא פעולה שמחושבת בזמן הקומפילציה, לא בזמן ריצה (כלומר, sizeof של מערך יתן לך את גודל המערך רק אם הגודל שלו סטטי).עוד כמה הערות כלליות:הפונקציה CharToInt מיותרת כשקיימת הפונקציה הסטנדרטית atoi.הפונקציה isOnlySpaces עושה עבודה מיותרת. במקום לספור כמה רווחים יש, אתה יכול פשוט לעצור ברגע שאתה נתקל בתו שאינו רווח.תשתמש ב-int main במקום void main, ודאג להחזיר 0 בסופה.I've said it before and i'll say it again - אחרי if/for/while תמיד תמיד תמיד לפתוח סוגריים מסולסלים, גם אם זו רק שורה אחת.דאג לשחרר את כל הזכרון שאתה מקצה כאשר אתה כבר לא צריך אותו יותר.
פורסם 2011 ביולי 2914 שנים מחבר http://dl.dropbox.com/u/24303191/func3.txtהוספתי פונקצית מיון בועות שממיינת את המבנים לפי אחד השדות (power)בתוך הפוקציה הזאת יש פונקציית swap. כשאני עוקב בדיבאגר אחרי ה-swap שורה שורה, אני לא רואה את ההחלפה מתבצעת בזמן אמת, אלא רק אחרי שאני יוצא מהפונקציה ערכי המשתנים מתחלפים, כתבתי משהו לא נכון?אחרי זה יש פונקציה שאמורה לאחד את כל המבנים לפי שדה הpower, היא קורסת לי בשורה של while(arr->power==arr[i+j]->power)עשיתי בדיקה על שתי משתנים, מסתבר שזה בגלל שרק ב arr[0] היה ערך, בarr[1] הופיעו לי פתאום סימני שאלה, לא ברור לי לאן נעלמו הערכים זה קשור אולי ל-swap? או שלא העברת את המערך כמו שצריך בפונקציה האחרונה?תודהעריכה : בדקתי והערכים של המערך כולם הולכים לאיבוד חוץ מהתא הראשון arr[0] בדיוק בכניסה לפונקציה האחרונה.לי נראה שהעברתי את המערך כמו שצריך, מישהו יכול לעלות על הטעות?
פורסם 2011 ביולי 3014 שנים א. ערוך את ההודעה שלך ושים את הקוד בתוך טג קוד, כי עכשיו הקוד דופק את ההודעה.ב. האופרטור <- שקול להפעלת * ואז .כלומר:a->xזה כמו(*a).xועכשיו תחשוב מה הבעיה עם השורה שעושה לך בעיות.
פורסם 2011 ביולי 3014 שנים מחבר סוגריים? האמת שעוד אתמול עברתי לצורה של (*a).x כי לא רציתי להתעסק עם זה : הבעיה הייתה שהייתי צריך לשים איפשהו סוגריים?
פורסם 2011 ביולי 3014 שנים לא, לא סוגריים.הבעיה היא שאתה מקבל מצביע למערך ואתה מתייחס אליו כמו מערך של מצביעים.
פורסם 2011 ביולי 3014 שנים מחבר אז איך זה אמור להיות?הכנסתי את arr שהוא משתנה מטיפוס Monom**כלומר arr[i]הוא משתנה מטיפוסMonom*בגלל שהוא מצביע בשביל לגשת לשדות שלו אני צריך להפעיל את החץ במקום הנקודה,לא? ???
פורסם 2011 ביולי 3014 שנים לביטוי [arr[j יש משמעות רק אם arr הוא מערך. אבל הוא לא מערך - הוא מצביע למערך.תנסה לצייר תרשים של מבנה הזכרון כשאתה קורא לפונקציה, ותבין מה הבעיה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.