כותב |
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 22 February 2010 בשעה 16:56 | | IP רשוּם
|
|
|
|
היי אני צריך עזרהלגבי שאלה:
איך אני פונה לפונקצית VOID G מפונקציה אחרת מבלי לקרוא לה. המורה נתן לנו טיפ דרך מחסנית את זה אני יודע מאסמבלר אבל אני משתמש עם ויזואל סטודיו איך אני שם רואה את המחסנית ושם אני רואה את הכתובת של פונקציה G. הדרך היחידה שאני יודע זה דרך מצביעים אבל אני לא בטוח שזה מה שהמורה רוצה. void (*ptr_g)()=&g; (*ptr_g)(); זה הדרך לעשות זאת עם מצביעים, השאלה שלי איל אני יכול לעשות לפנות לפנוקציה דרך המחסנית.
תודה ראובן
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 22 February 2010 בשעה 19:01 | | IP רשוּם
|
|
|
|
אתה יודע איך עובדת קריאה לפונקציה מבחינת המחסנית ?
דחיפת ה"פרמטרים" לפונקציה ואז דחיפת המקום בקוד לחזור אליו בסיום הפונקציה.
אם אתה מגדיר משתנה לוקאלי לפונקציה הוא נשמר במחסנית
אם תיקח את הכתובת שלו (derefrence)
פשוט תכתוב בזיכרון אחרי איפה שהמשתנים שלך יושבים ואחרי המקום חזרה שלך את המקום חזרה של הפונקציה הנוספת ואז תשנה את הכתובת של הפקודה הבאה להריץ לכתובת של הפונקציה...
שושן.
ממליץ לך קצת להיעזר הגוגל (אתה חייב לפרט באיזה קומפיילר אתה משתמש!)
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 23 February 2010 בשעה 11:31 | | IP רשוּם
|
|
|
|
היי
תודה, איך מחסנית עובדת אני יודע ,אבל אני לא יודע איך לראות את המחסנית בויזואל סטודיו.
ובאיזה כתובת המחסנית מתחילה.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 23 February 2010 בשעה 15:29 | | IP רשוּם
|
|
|
|
זה מה שאמרתי לך, תגדיר משתנה לוקאלי והכתובת שלו זאת הכתובת של המחסנית...
אם אתה רוצה להסתכל על המחסנית תסתכל על הכתובת של מהחסנית בחלון memory
תפתח את ה-EXE ב-OLLYDBG אם אתה רוצה לראות ASSEMBLY לדוגמא שקורא לפונ'
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 03 March 2010 בשעה 11:44 | | IP רשוּם
|
|
|
|
תודה הצלחתי לעשות את זה הדפסתי למסך את הכתובות ושם ראיתי לאיזו כתבות אני צריך לחזור.
יש לי עוד שאלה באותו נושא: אם אני צריך לעשות אותו דבר לקרוא לפונקציה אבל הפעם מMAIN איך עושים זאת?? ניסיתי לעשות את זה באותו סגנון אבל אני לא מצליח.
תודה
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 03 March 2010 בשעה 18:14 | | IP רשוּם
|
|
|
|
מה זאת אומרת לא מצליח ?
אתה יכול לפרט ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 04 March 2010 בשעה 13:21 | | IP רשוּם
|
|
|
|
היי ניסיתי אותו עיקרון להגדיר משתנה ולראות את המחסנית. זו התוכנית שאני אמור להוסיף פקודות כך שאני צריך לפנות לפונקציה g מתוך הMAIN מבלי לםנות אליה:
קוד:
void g() { printf ("In g()!\n"); system ("pause"); exit (0); }
int f(char *source) { char dest [4]; strcpy(dest, source); return 0; }
int main() { char source[50]; // כאן אני צריך להוסיף את הפקודות.
f(source); system ("pause"); return 0; } |
|
|
עכשיו דרך אחת חשבתי שזה איך שהוא קשור למערך אבל אני לא יודע איך.
תודה ראובן
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 05 March 2010 בשעה 18:15 | | IP רשוּם
|
|
|
|
האמתי שאני לא רואה את ההבדל בין שני המקרים שאתה מתאר...
את הראשון פתרת ?
אני מניח שלא עקפת את SecurityCookie, ולכן אני מניח שביטלת אותו בהגדרות של הפרוייקט...נכון ?
ואני מניח שלכתוב את הקוד שקובץ לפונקציה g הצלחת, כי אפילו אני עם הידע המאוד [מאוד מאוד] קטן שלי באסמבלי הצלחתי...
אז מה הבעיה הפעם לכתוב במחסנית על הכתובת שצריך לחזור אליה (מ-main) ?
שושן.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 06 March 2010 בשעה 20:25 | | IP רשוּם
|
|
|
|
היי
תודה על העזרה זה עובד בשני התרגילים.
בשני זה אותו עיקרון אבל בכתובת שונה (מן הסתם).
קיבלתי השבוע עוד שאלה הפעם זה ברקורסיה יש לי מערך של 4 איברים (שמספרם ידוע) ומספר יעד ואני צריך להפעיל 4 פעולות חשבון ברקורסיה כך שאני אגיע למספר היעד שלי הפונקציה מחזירה0 אם היא נכשלת או 1 אם היא מצליחה. תודה
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 March 2010 בשעה 01:03 | | IP רשוּם
|
|
|
|
שאלה לפני הדרך לפתרון, צריך להשתמש בכל מספר פעם אחת?, או שאפשר להשתמש באיזה מספרים שרוצים כמה פעמים שרוצים ?
כי זה לא ברור מהשאלה כפי ששלחת אותה...
אוקיי, בוא נתחיל בתרגיל ביניים, אתה יודע לכתוב פונקציה שמקבלת מערך של
מספרים ומדפיסה כל סידור בן 5 מספרים שכולל את חלקם או את כולם?
אתה יודע לכתוב פונקציה שמקבלת מערך של מספרים ומדפיסה כל סידור בן 5 מספרים שכולל כל אחד מהם פעם אחת ?
עצה: צריך להגדיר עוד מערכ/ים ולהעביר גם אותם כפרמטר, יכול להיות שצריך גם להעביר פרמטרים של האורך שלהם (אם אתה לא משתמש ב-vector/list/...)
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 08 March 2010 בשעה 15:44 | | IP רשוּם
|
|
|
|
היי
צריך להשתמש כל פעם במספר אחד בלבד לא משנה הסדר שלהם ובאיזה פעולות חשבון שרוצים. המערך נתון (1,5,6,7) מספר יעד 21.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 March 2010 בשעה 19:33 | | IP רשוּם
|
|
|
|
אוקיי אז החתימה של הפונ' צריכה להיות משהו כזה לדעתי:
קוד:
bool canReach(int* nums, bool* numsUsed, int resSoFar, int resWanted) |
|
|
אתה צריך לעבור על המערך numsUsed
- אם כולו מלא ב-TRUE אז מחזיר האם resSoFar שווה ל-resWanted.
- עבור כל תא שהוא FALSE - מסמן אותו כ-TRUE, קורא לפונקציה ב-4
רקורסיות, כאשר מעדכן את resSoFar ל(תוצאה של המספר עד כה ___הפעולה הנוכחית___ המספר במערך שעוד לא השתמשנו בו) - אם אחת הקריאות הרקורסיביות מחזירה אמת אתה מחזיר אמת, אם אף אחת מהן לא החזירה אמת אתה מחזיר שקר.
אני מקווה שאתה רואה מה המקרה הבסיסי פה - ומה הצעד הרקורסיבי לפישוט הפתרון.
אם לא תשאל.
אם הבנת הכל אני מאתגר אותך לעשות אופטימיזציה כמה שאתה יכול לפתרון כדי שיעבוד יותר מהר (תשלח לפני ואחרי).
שושן.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 08 March 2010 בשעה 21:19 | | IP רשוּם
|
|
|
|
היי שכחתי לציין עוד דבר אחד אני צריך להגיע לפיתרון בעזרת פעולות חשבון בסיסיות כלומר להשתמש עם כל פעולות החשבון. לא כל פעם אם רק חיבור או רק חיסור או רק כפל וכו.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 09 March 2010 בשעה 00:35 | | IP רשוּם
|
|
|
|
אוקיי - אז אני מציע שתוסיף את זה לפתרון בעצמך כי זה די דומה, תכתוב אם אתה מסתבך...
שושן.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
rubingr משתמש מתחיל
הצטרף / הצטרפה: 01 February 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 18
|
נשלח בתאריך: 14 March 2010 בשעה 14:39 | | IP רשוּם
|
|
|
|
היי
תודה על העזרה זה לקח לי כמה ימים אבל בסופ זה עובד.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 14 March 2010 בשעה 17:21 | | IP רשוּם
|
|
|
|
יפה מאוד!
לדעתי זאת הדרך הכי טובה ללמוד...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|