עבור לתוכן

array of objects - cpp

Featured Replies

פורסם

class Product
{
public:
Product(){ID=-1;}
Product(int id){ID=id;}
Product(const Product & p){ID=p.ID;}
~Product(){ID=-999;};
int getNumber(){return ID;}

private:
int ID;
};

איך אוכל ליצור מערך מגודל N כך שתהיה לי אפשרות להוסיף עליו אובייקטים של PRODUCTS.

האם אני חייב ליצור פונקצייה שיכולה לשנות את ה-ID?

הראיון היחיד שעלה לי לראש זה ליצור מערך

	Product kits[N];

להוסיף את הפונ' ל-Product שיכולה לשנות את ה-ID ואחרי זה פשוט לשנות את ה-IDs של האובייקטים במערך.

אבל נראה לי שיש שיטה יותר טובה.

פורסם

מה הכוונה "להוסיף אובייקטים"?

למערך כמו שהגדרת יש גודל קבוע. כל האובייקטים נוצרים כשאתה מגדיר את המערך (ע"י ה- default constructor) ואז אתה לא באמת מכניס ומוציא איברים אלא רק משנה להם את הערך, ואז אתה צריך פונקציה שמשנה את ה- ID, או אופרטור השמה.

עוד דבר - אין שום סיבה הגיונית לשים -999 ב- destructor.

מה שאתה יכול לעשות זה להחזיק מערך או רשימה של מצביעים ל- Product, ואז להכניס כל פעם אובייקט חדש, שאותו אתה מאתחל עם ה- constructor השני.

פורסם
  • מחבר

הרעיון של התוכנה שמשתמש מזין מס' , ואני אמור ליצור מחסנית של האובייקטים והמשך לעבוד עם המחנית (לדוג' לרוקן אותה) חשבתי לעבוד עם רשימה מקושרת של האובייקטים, להוסיף

Product *next;

למחלקה.

האם זאת תהיה הצורה הנכונה לפתרון?

פורסם
  • מחבר

משהו כזה?


Product *top=NULL;
Product *tmp=NULL;
for(int i=0; i<5; i++)
{
tmp=top;
top=new Product(i);
top->setNext(tmp);
}

פורסם

יש מניעה להשתמש ב STL ?

פורסם

ל- SDF - אני מניח שהם רוצים שהוא יממש את זה.

לפי דעתי, הפתרון הנכון יהייה ע"י רשימה מקושרת של האיברים. את המחסנית אתה יוצר ע"י מחלקה אחרת שיורשת אותה בPROTECTED, שבה יש אפשרות לבצע פעולות שמתאימות רק למחסנית.

פורסם
  • מחבר

איני יודע מה זה SDF אבל כן, התחלתי לעשות את התרגיל ברשימה מקושרת.

אני מבין שזו השיטה המתאימה?

פורסם

STL - STANDARD TEMPLATE LIBRARY, ספרייה של C++ שמכילה מימושים של כל המבנים הבסיסים שצריך לשפת OOP, הכל בצורת TEMPLATES, יש שם LINKEDLIST, QUEUE, STRING וכו'...

פורסם
  • מחבר

מגניב :xyxthumbs:

את זה לא גילו לנו, כנרה שהמרצה רוצה שנלמד את השיטות.

ואני מגלה את זה אחרי שישבתי מהבוקר על התוכנה? :kopfpatsch::silly:

נו טוב, לפחות תירגלתי

פורסם

תראה, אני מניח שאם הוא לא גילה לכם, זה בגלל שהוא רוצה שתממשו את זה לבד כמו שנאמר, אבל כדאי להכיר :)

פורסם

ל- SDF - אני מניח שהם רוצים שהוא יממש את זה.

לפי דעתי, הפתרון הנכון יהייה ע"י רשימה מקושרת של האיברים. את המחסנית אתה יוצר ע"י מחלקה אחרת שיורשת אותה בPROTECTED, שבה יש אפשרות לבצע פעולות שמתאימות רק למחסנית.

זה לא נחוץ. עדיף להשתמש ב-containment בצורה הבאה:



class List_of_products // better use templates if you can
{
// ....
};

class Stack {
// ....
private:
List_of_products my_list;
};

פורסם

Zelig - לא ממש ברור לי מה הקשר כאן למחסנית.

אם אין פעולות של הכנסת/הוצאת איבר, אלא רק יצירת אוסף בגודל קבוע של אובייקטים, אין שום סיבה בעולם להשתמש ברשימה מקושרת.

אפשר להשתמש במערך של אובייקטים שמוקצה דינאמית, או מערך של מצביעים.

פורסם

איני יודע מה זה SDF אבל כן, התחלתי לעשות את התרגיל ברשימה מקושרת.

אני מבין שזו השיטה המתאימה?

SDF זה זה שהגיב מעלי :silly:

זה לא נחוץ. עדיף להשתמש ב-containment בצורה הבאה:

זה שגוי. מחסנית לא מכילה רשימת אלא היא סוג של רשימה. לכן צריך להשתמש בירושה.

לבומרנג - כנראה ההוראות בתרגיל(לפי מה שהבנתי) מבקשות מחסנית.

לפותח התראד: למדת בסיסי נתונים? מהן הפעולות שאתה מתבקש לעשות על הנתונים(הכנסה/חיפוש/WHATEVER)?

כדאי לתכנן את הצורה שאתה שומר אותם לפי הצרכים והשימוש שאתה הולך לעשות בהם.

פורסם
  • מחבר

בקצרה מה צריכה לעשות התוכנית:

1. תחילה תוכנית שואללת כמה ציוד להיצתייד

2. התוכנית מדפיסה פלט עבור כל ציוד שהוכנס למחסן (יוצרים מחסנית)

3. התוכנית שואלת כמה לקןחות\עובדים יש.

4. מודפסת בקשה לשמו של עובד

5. קולטים מהמשתמש את השם (יוצרים טור)

6. חזור על 4, 5 עד כליטת כל העובדים

7. שלוף עובד מסוף הטור

8. העבר אותו למחסן לקבל ציוד

9. הנפק לו ציוד מהמחסנית

10. הדפס את שם העובד וספר הציוד שהונפק לו

11. חזור על 7, 8, 9, 10 כל עוד ניתן

12. שחרר זיכרון

13. סיים

בנוסף לכך נתונות פרוטוטיפים של הפונ' שצריך לבנות עם אופצייה שאפשר להוסיף פונ' משלנו.

האמת, בזמן ששאלתי את השאלות אתמול עשיתי את רוב העבודה, נראה לי שזה לא הכי יפה אבל עם הזמן זה יבו.

פורסם

SDF זה זה שהגיב מעלי :silly:

זה שגוי. מחסנית לא מכילה רשימת אלא היא סוג של רשימה. לכן צריך להשתמש בירושה.

בקצרה: מחסנית אינה רשימה, אלא ממומשת ע"י רשימה. ועדיין ירושה אינה הפתרון המתאים.

פתחתי דיון נפרד על מנת לדון בכך: http://hwzone.co.il/community/index.php?topic=180866.0

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים