שאלה 2 ו 3

צפה בנושא הקודם צפה בנושא הבא Go down

שאלה 2 ו 3

הודעה  ohad cohen on Fri Apr 10, 2009 6:32 pm

שלוםם לכולם!!!
קודם כל ברכות על הפורום החדש!!
יש לי שאלה למי שעשה את שאלות 2 ו 3.... הם פשוט לא יודעים לנסח שאלות

אוקי בשאלה 2.ב הם אומרים למז שתי רשימות לרשימה אחת.... האם אתם משנים את אחת הרשימות ואז מחזירים אותה..
ז"א נגיד LST1 =2,4 5
LST2= 1,3 6
אז משנים את המצביעים ב LST1 ל 1,2,3,4,5,6 ז"א ה"ראש" של הרשימה הראשונה נהיה בעצם הראש של הרשימה השניה וכו...
זה הפאקינג כוונה שלהם?

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

יאלה חבר'ה תודה בכל אופן שיהיה חגגגג שמחחח
סופש מהנה!!!!!
avatar
ohad cohen
מתפקד בקושי
מתפקד בקושי

מספר הודעות : 6
Join date : 10.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

לגביי שרלה 2.ב

הודעה  Admin on Fri Apr 10, 2009 8:12 pm

ממה שאני הבנתי מההוראות, וזה גם מה שביצעתי בשטח - זה שמכיוון שהערך שהפונקציה מחזירה הוא מסוג LIST, חייבת להיות איזושהי הקצאה ראשונית בתוך הפונקציה למשתנה חדש מסוג LIST כאשר ה HEAD וה TAIL שלו מצביעים על כלום. ועכשיו מה שנותר לעשות בתוך הפונקציה זהה למה שאמרת בעצמך- הצבעה עם HEAD, של הרשימה החדשה, על הצומת (Node) שמכילה מספר הכי קטן. בשלב שלאחר מכן, שדה ה-NEXT שבצומת הנ"ל ייתעדכן (ובכך בעצם יפגום ברשימה המקורית שהוא מקושר אליה) ויצביע על הצומת הבאה שמכילה מספר יותר גדול, באחת משתי הרשימות.
כך הלאה עד אשר קושרו כל הצמתים שבשתי הרשימות הנתונות אל תוך הרשימה החדשה.
לבסוף תוחזר הרשימה החדשה.

flower חג אביב שמח!
avatar
Admin
Admin

מספר הודעות : 62
Join date : 08.04.09
Age : 32

צפה בפרופיל המשתמש http://csmta.forumhebrew.com

חזרה למעלה Go down

שאלה 3ב'

הודעה  Xachi on Sun Apr 12, 2009 5:11 pm

אוהד, בקשר לשאלה שלך,
אמנם רק עכשיו התחלתי את השאלה הזו אבל לפי איך שאני מבין אותה, ברגע שקיבלת את הסכום של שתי הרשימות 158 לפי הדוגמא שלך, ה-head מצביע לספרה 8. אתה צריך להחזיר בעצם רק את המצביע ל-head.
הם לא רוצים מצביע לכל ספרה - אלא מצביע לסכום הסופי.

תהנו מהחופשה farao
avatar
Xachi
מתפקד בקושי
מתפקד בקושי

מספר הודעות : 6
Join date : 08.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

Re: שאלה 2 ו 3

הודעה  Admin on Sun Apr 12, 2009 11:48 pm

אוהד ב-3.ב
אין מצב שבו אתה עושה הקצאה דינאמית למערך. כל הרעיון הוא שתמצא את הדרך המתמטית הנכונה לעבור על הספרות של n1 ועל הספרות של n2 (הספרות = הצמתים ברשימה) ולבצע עליהן פעולות, תוך כדי הקצאת צמתים חדשים לרשימת sum, כך שבסוף פעולת הפונקציה, יקושרו ב-sum כל הספרות הרלוונטיות שבאמת יבטאו את המכפלה של n1 ו-n2.

כשתקרא לפונקציה, תוודא שהמצביע List* sum מצביע על רשימה בזיכרון שה-head של וה-tail שלה מצביעים NULL.
מה שאומר שב-main שלך כבר תבצע הקצאה דינאמית למשתנה מסוג LIST או שלא בהקצאה דינאמית - זה לא משנה.
avatar
Admin
Admin

מספר הודעות : 62
Join date : 08.04.09
Age : 32

צפה בפרופיל המשתמש http://csmta.forumhebrew.com

חזרה למעלה Go down

האם כאשר

הודעה  Xachi on Mon Apr 13, 2009 12:34 am

אתם יוצרים את הרשימה השלישית של הסכום או הכפל,
אתם גם משנים בדרך את הרשימות המקוריות או לא?
avatar
Xachi
מתפקד בקושי
מתפקד בקושי

מספר הודעות : 6
Join date : 08.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

Re: שאלה 2 ו 3

הודעה  ohad cohen on Mon Apr 13, 2009 12:40 am

סבבה אבל השאלה שלי היא מאיפה אתה יוצר את הכתובות של הספרות הללו שבתוך הרשימה SUM?
הרי ההגדרה של כל חוליה ברשימה היא מצביע ל int וכתובת next , אז המצביע ל int צריך להיות כתובת מסויימת שאני מכניס לחוליה...
איך אתה יוצר את הכתובת הזאת?
סתם דוגמא שתמחיש:
n1= 1 2
n2= 3 5
במקרה הזה יש לנו סה"כ 4 פוינטרים כי לכל מספר יש כתובת.....
נגיד עכשיו חישבת ויצא לך 21 +53 = 74 ז"א אתה צריך ליצור עכשיו רשימה חדשה עם שתי חוליות ושתי כתובות
החוליה הראשונה מצביע ל 4 והחוליה השניה מצביע ל 7 (כי לפי מה שהם רוצים זה הפוך סדר הספרות) אז מאיפה אתה מביא כתובות למספרים האלה???
avatar
ohad cohen
מתפקד בקושי
מתפקד בקושי

מספר הודעות : 6
Join date : 10.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

קודם כל אין צורך, ואני חושב אפילו שאסור לשנות את n1 ו-n2

הודעה  Admin on Mon Apr 13, 2009 10:10 am

ולשאלתך, מאיפה אתה מביא כתובות למספרים האלה, פשוט תיצור פונקציה שבוא נגיד, מקבלת מספר int.
והערך שהיא מחזירה הוא ListNode*
כלומר - מחזירה כתובת של צומת (חולייה) חדשה שבה הפויינטר dataPtr מצביע על int שבו הכנסת את המספר.
כלומר בפונקציה הזאת תבצע ראשית הקצאה לחולייה חדשה:
malloc (sizeof(ListNode)) and i just add some words to make the english code looking right
ואז תבצע הקצאה בזיכרון למקום של Int חדש:
malloc (sizeof(int)) and agian bla bla bla just for the left to right writing appearance

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

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

מקווה שעזרתי sunny
avatar
Admin
Admin

מספר הודעות : 62
Join date : 08.04.09
Age : 32

צפה בפרופיל המשתמש http://csmta.forumhebrew.com

חזרה למעלה Go down

צפה בנושא הקודם צפה בנושא הבא חזרה למעלה


 
Permissions in this forum:
אתה לא יכול להגיב לנושאים בפורום זה