iliagildin פורסם 2014 ביולי 9 Share פורסם 2014 ביולי 9 קיבלתי היום משימה במכללה ליכתוב פונקציה ב C שמקבלת ווקטור ומחזירה פוינטר לכל תא בווקטורוכמו כן גם תוכנית void main שמדפיסה את המשתנה הנל מהפונקציה על פניו המשימה קלה אבל אני לא יודע איך אני מחזיר פוינטר מפונקציהאו איך אני קורא לפונקציה שהערך המוחזר הוא הפוינטרint *asfor i=1 i=sizeof(x) i++as(i)=&x(i)endreturn(as)תודה רבה לכל העוזרים קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביולי 9 Share פורסם 2014 ביולי 9 מה זה וקטור? אתה מתכוון למערך? (ב-C אין כזה דבר שנקרא וקטור)השאלה שלך לא ברורה, וגם הקוד לא. למה שלא תעלה את הקוד האמיתי? קישור לתוכן שתף באתרים אחרים More sharing options...
iliagildin פורסם 2014 ביולי 10 מחבר Share פורסם 2014 ביולי 10 ווקטור הינו מערך חד מימדי (לידע כללי מטריצה הינה מערך דו מימדי) פשוט חשבתי שאם אתם תראו לי איך לעשות למערך חד מימדי אני כבר ידע לעשות למערך דו מימדי הרי רק צריך לשנות לולאה ולהוסיף כמובן עוד לולאה. התוכנית שכתבתי הינה התוכנית שלי אני פשוט לא יודע איך להגדיר פונקציה שתחזיר פוינטר ואיך ליקרוא לאותה פונקציה מה VOID MAIN תודה רבה לכל העוזרים קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביולי 10 Share פורסם 2014 ביולי 10 פונקציה מחזירה פוינטר בדיוק כמו שפונקציה מחזירה כל דבר אחר. במקום לדוגמה להחזיר int הפונקציה צריכה להחזיר *int.עדיין לא הבנתי מה אתה רוצה ש"יראו לך". אם אתה רוצה עזרה עם תרגיל, אז תעלה לכאן את התרגיל ותגיד בדיוק איפה אתה מתקשה. אם אתה כותב קוד, אז תכתוב קוד אמיתי, לא משהו שרק קצת נראה כמו קוד כמו שכתבת בהודעה הראשונה. קישור לתוכן שתף באתרים אחרים More sharing options...
iliagildin פורסם 2014 ביולי 10 מחבר Share פורסם 2014 ביולי 10 אני רוצה שיקחו את הקטע קוד שלי שעובד כאשר הוא ב VOID MAIN יכניסו אותו לפונקציה ויראו לי איך ליקרוא לאותה פונקציה מה VOID MAIN(מקווה שאני לא נישמע חוצפן הטון רגוע לחלוטין אני פשוט לא יודע איך ליכתוב הודעה זו אחרת) קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביולי 10 Share פורסם 2014 ביולי 10 בשום שלב לא אמרת מה התרגיל ומה הקוד שלך. לא בערך, בדיוק. קישור לתוכן שתף באתרים אחרים More sharing options...
iliagildin פורסם 2014 ביולי 10 מחבר Share פורסם 2014 ביולי 10 התרגיל הוא לקחת מערך להכניס אותו לפונקציה אשר מחזירה מערך כאשר כל תא במערך הוא הערך של הפוינטר למערך המקורילא מבין מה לא ברור קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביולי 10 Share פורסם 2014 ביולי 10 למה אתה מתעקש לא לרשום פה את התרגיל המלא, ואת הקוד המדויק שכתבת עד כה? קישור לתוכן שתף באתרים אחרים More sharing options...
iliagildin פורסם 2014 ביולי 10 מחבר Share פורסם 2014 ביולי 10 [CENTER] include #stdio.h void main(){int x[9];int *rt[9]; x={1, 2, 3, 4, 5, 6, 7, 8, 9}; rt*=myfunc(x[]); printf("everything I want: %x\n", rt);} int* myfunc(x[]){[9]int *cdfor (i=1 i=sizeof(x) i++){cd[i]=&x[i];end[/CENTER][center][indent=2]}return(cd)}זה הקוד שלי כל מה שאני רוצה זה שהוא ידפיס לי את המשתנה rt שבו ימצאו כל הקטובות של הערכים שבמשתנה xלא מבין מה לא בסדרתודה רבה לכל העוזרים קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביולי 10 Share פורסם 2014 ביולי 10 הקוד הזה הוא לא קוד C חוקי, אפילו לא קרוב לכך. נראה לי שאתה צריך קודם לחזור על חומר קצת יותר בסיסי...אבל לשאלתך: יש שתי דרכים להחזיר מערך מתוך פונקציה.הדרך הראשונה היא שהפונקציה לא תיצור את המערך, אלא תקבל אותו מבחוץ ורק תמלא אותו. דהיינו, myfunc צריכה להיראות ככה:void myfunc(int x[], int* result[]) { ... }שים לב ש-result הוא מערך של מצביעים ל-int, והפונקציה צריכה למלא אותו. האחריות על להקצות את המערך הזה היא של מי שקורא לפונקציה (במקרה שלך זה ה-main).הדרך השנייה היא שהפונקציה בעצמה תקצה את המערך באמצעות malloc, ותחזיר מצביע אליו. שים לב שכיוון שזה מערך של מצביעים, הפונקציה צריכה להחזיר מצביע למערך של מצביעים, כלומר מצביע למצביע, ככה:int** myfunc(int x[]) { ... }בתוך הפונקציה היא צריכה לעשות malloc למערך בגודל המתאים. האחריות של ה-main כרגע היא רק לשחרר את המערך הזה (ע"י free) בסוף העבודה איתו.יש מבין? קישור לתוכן שתף באתרים אחרים More sharing options...
iliagildin פורסם 2014 ביולי 10 מחבר Share פורסם 2014 ביולי 10 את השיטה השניה לא הבנתי אבל בשיטה הראשונה מה הבעיה של הפונקציה להחזיר לי את result ל main? קישור לתוכן שתף באתרים אחרים More sharing options...
Dimka פורסם 2014 ביולי 10 Share פורסם 2014 ביולי 10 אם הפונקציה קיבלה מצביע למערך קיים ופשוט מילאה אותו, אז למה אתה צריך שהיא תחזיר לך את התוצאה? הרי כתובת וגודלו של המערך ידוע מראש...המקרה היחיד שתרצה בכל זאת להחזיר משהו זה אם הייתה לך שגיאה והיא תחזיר ערך שמייצג שגיאה מסויימת. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.