נעם:) פורסם 2006 בפברואר 17 Share פורסם 2006 בפברואר 17 1. איך מגדירים זכרון דינמי למערך דו מימדי <לדוגמא: [ma[n][m > ???????2. איך פותרים את השאלה ההבאה:. בחברת "לא להשמנה כן להרזיה " יש דיאטה חדישה. מותר לאכול כל מה שרוצים כל עוד שבמשך היום אוכלים 11 יחידות של ויטמין A, 31 יחידות של ויטמין B ו-20 יחידות של ויטמין C.ניתן לקנות מהחברה חבילות ויטמינים כמפורט להלן:חבילה 1 - המכילה יחידת אחת של ויטמין A, 4 יח' של B ו-2 יח' של .Cחבילה 2- המכילה 2 יח' של A, 5 של B ו-3 של C.חבילה 3 -המכילה 3 יח' של A ו-3 של B ואפס יח' של C.העלות של חבילה 1 היא 10 ¤ ושל החבילות האחרות 5 ¤.כתוב תוכנית אשר תדפיס את כל האפשרויות של שלושת החבילות אשר יתנו בדיוק את דרישות הויטמינים ליום אחד. על התוכנית גם להדפיס לאיזה אפשרות יש את העלות הנמוכה ביותר. אני לא יודעת מאיפה להתחיל???? ??? ??? :'( קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 17 Share פורסם 2006 בפברואר 17 1) int **arr;או int arr[][];2) תיצור מחלקת חבילות.בתוך החבילה תשים רשימה מקושרת או מבנה נתונים כלשהו ששומר את הויטמינים בתוך החבילה. תשמור גם את המחיר של כל חבילה.תיצור COLLECTION כזה, שבו יהייה המידע על הויטמינים והערך שלהם.תבנה אלגוריתם שמחשב אילו חבילות אתה יכול להכניס כדי לעמוד בדרישות של 11, 31, 20(תשלח אותם בתור פרמטרים שאם ישנו את הדרישות אז לא תצטרך לשנות את כל התוכנית).עריכה: במקרה הזה יש לך 2^3 אפשרויות, מכיוון שיש לך 3 חבילות. אם יהיו לך N חבילות, אז אתה תצטרך ליצור 2^n אפשרויות, ולראות אם כל אחת מהן מתאימה. קישור לתוכן שתף באתרים אחרים More sharing options...
נעם:) פורסם 2006 בפברואר 17 מחבר Share פורסם 2006 בפברואר 17 אפשר הסבר יותר פשוט ויותר מופרט.....<אני צריכה להגיש את התרגיל הזה ולא מצליחה>אוף!!!!!!! :'( קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2006 בפברואר 17 Share פורסם 2006 בפברואר 17 קודם כל, 1:ככה רק מגדירים מערך דו מימדי, אבל לא מקצים לו זכרון.למעשה אי אפשר להקצות זכרון למערך דו מימדי.על מנת להקצות זכרון למערך בגודל m*n צריך למעשה להקצות n מערכים בגודל m, כך:int **arr = new *int[m]; // declare m pointers for m arraysfor (int i = 0 ; i < m ; ++i) { arr[i] = new int[n]; // allocate a n-long array for each pointer}או לחילופין להקצות מערך אחד בגודל m*n ולחלק אותו ל-m מערכים שונים.int **arr = new *int[m]; // declare m pointers for m arraysarr[0] = new int[n*m]; // allocate all the memory needed for m n-long arraysfor (int i = 0 ; i < m ; ++i) { arr[i] = arr[0] + n*i; // make sure each pointer points to the next n ints}הדרך השנייה עדיפה למרות שהיא קצת יותר מסובכת, כי ככה מקצים זכרון רק פעם אחת, וכל המערך יושב בצורה רצופה בזכרון.שימי לב שבשני המקרים צריך מראש להקצות מערך של m מצביעים.לגבי 2:לא ממש ברור לי למה להשתמש ברשימה מקושרת או כל מבנה נתונים אחר....כל מה שצריך הוא struct שמייצג חבילה, שמכיל ארבעה ממברים - כמה כדורים יש מסוג A, כמה מסוג B, כמה מסוג C, ומה המחיר.עכשיו צריך לכתוב פונקציה שמקבלת רשימה/מערך בגודל 3 (אפשר גם שיהיה דינמי, אם רוצים לשנות את מספר החבילות) שמייצג את סוגי החבילות האפשריות, ואת הדרישות למספר הכדורים הסופי.הפתרון החכם הוא פשוט לבנות מערכת משוואות לינאריות ולפתור אותן (הנעלמים - כמה חבילות יש מכל סוג, הקבועים - כמה כדורים מכל סוג יש בכל חבילה).וזהו... קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 17 Share פורסם 2006 בפברואר 17 לא ממש ברור לי למה להשתמש ברשימה מקושרת או כל מבנה נתונים אחר....כי מחר יגלו את ויטמין D. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2006 בפברואר 18 Share פורסם 2006 בפברואר 18 אני מבין את הרצון להיות כמה שיותר גנרי, ואני בהחלט בעדו.היית יכול גם להגדיר קלאס אבסטרקטי מסוג ויטמין ו-3 בנים שלו מסוג A, B ו-C...אבל בכל זאת מדובר ב(מה שנראה כמו) תרגיל בית ספר.אין צורך לסבך יתר על המידה. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 18 Share פורסם 2006 בפברואר 18 השאלה היא למה התכוון המשורר.אם למדתם מה זה רשימות מקושרות, סביר להניח שהוא ירצה שתיישמו את זה. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.