שאלה מטורת ב-C++

מוקטן

New member
שאלה מטורת ב-C++

שלום לכולם... קיבלתי את השאלה הבאה, ואין לי מושג קלוש איך לגשת לאיזה כיוון לחשוב (חוץ מזה שזה בטח קשור לפולימורפיזם כי זה מה שלמדנו) אודה לכ מי שיכול לעוזר בדרך כלשהי... והנה השאלה: הגדר את הקלאסים הבאים: Expression, BinOp, UnOp, TernOp, Literal, Sum, Product, Exponent, CondExp את הפונקציה הוירטואלית: float eval() וכל מה שמתבקש על מנת שהתכנית הבאה : main() } expression *p = new Exponent(new literal(2.0),new Sum(new literal(1.0),new literal(2.0))); expression *q = new CondExp(new Sum(new literal(1.0),new literal(-1.0((, new Exponent(new literal(4.0), new literal (3.0)), new Product(new literal (2.0),new literal (3.0))); cout << *p " = " >> >> p->eval(); cout << *q " = " >> >> q->eval(); } תדפיס את הפלט הבא : ( 2 ^ ( 1 + 2 ) ) = 8 (( 1 + -1)) ? ( 4 ^ 3 ) : ( 2 * 3 ) = 6 ושוב תודה לכל מי שיכול לעזור.
 

gmorphus

New member
המממ...

לא ממש התעמקתי אבל כמה דברים: א. כשאתה מכניס קוד תיישר אותו לצד שמאל ע"י כך שתלחץ על [תחילת קוד] לפני הקוד עצמו ו[סיום קוד] לאחר הקוד. תוכל למצוא את אלה מתחת לחלון כתיבת ההודעה. ב. תחשוב מה זה literal, מה בעצם צריך להכיל, תחשוב מה צריך להתבצע ב c'tor של Sum ושל Exponent וכו' ולאט תבנה את התוכנית שלב שלב. הרמז מספיק טוב?
 

מוקטן

New member
קודם כל

בקשר ל-א. הבנתי עכשיו בקשר לשאלה - מה שמפריע לי הוא שלמעשה ע"ס הקוד כל האוביקטים אמורים להחזיר STRING ל-EXPRESSION והפונקציה eval אח"כ תעשה את ה-PARSING והחישוב הביטוי שמוגדר בקוד למעשה יוצר את האוביקטים ולכן עובר דרך כל ה-c'tor-ים של כולם - אבל הוא הרי לא יכול להחזיר כלום ... איך אני בונה את הביטוי ? תודה מראש על כל תגובה.
 

gmorphus

New member
אתה צריך לסדר את הקוד שכתבת כאן

תסדר כמו שצריך את כל הסוגריים למיניהן, תיישר אותו לשמאל לדוגמא ככה:
Expression *p = new Exponent( new literal(2.0), new Sum( new literal(1.0), new literal(2.0)) );​
ניסיתי לעשות את זה בעצמי אבל יש שם סוגריים שלא ממש מסתדרים.
 
למעלה