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

שאלה 2 ו 3

3 posters

Go down

שאלה 2 ו 3 Empty שאלה 2 ו 3

הודעה  ohad cohen 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 איברים כביכול ואז שולח מצביעים???

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

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

חזרה למעלה Go down

שאלה 2 ו 3 Empty לגביי שרלה 2.ב

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

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

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

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

https://csmta.forumhebrew.com

חזרה למעלה Go down

שאלה 2 ו 3 Empty שאלה 3ב'

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

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

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

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

חזרה למעלה Go down

שאלה 2 ו 3 Empty Re: שאלה 2 ו 3

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

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

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

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

https://csmta.forumhebrew.com

חזרה למעלה Go down

שאלה 2 ו 3 Empty האם כאשר

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

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

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

חזרה למעלה Go down

שאלה 2 ו 3 Empty Re: שאלה 2 ו 3

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

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

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

חזרה למעלה Go down

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

הודעה  Admin 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
Admin
Admin
Admin

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

https://csmta.forumhebrew.com

חזרה למעלה Go down

חזרה למעלה

- Similar topics

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