בעיה בתיכון נכון

רחפפת

New member
בעיה בתיכון נכון

הי, קודם כל, המוןתודה למי שיפתור לי ת'בעיה. התוכנית שלי צריכה לבצע מחשבון. הקלט האפשרי, יהיה מהסוג:(לצורך המחשה נתתי דוגמאות) 1.קלט: a=b+6-3 בקבלת קלט זה , על התוכנית לשמור את המשתנה a במבנה מסוג map ,כאשר המפתח יהיה המשתנה, והערך יהיה מצביע לעץ המכיל את הביטוי שמעבר לשווה. 2.קלט: a? פלט: ערך a עפ"י החישוב שאותו תחשב פונקציה בעץ. 3.קלט: ? פלט: ערך כל הביטויים השמורים כרגע במבנה ה-map . בסוף התוכנית , תנתן אפשרות לטעון את הביטויים השמורים כרגע ב-map, לתוך קובץ. והשאלה הגדולה היא, איך לחלק את המחלקות? האם מחלקת העץ שיכת ללוגיקה-מכיון שהיא מבצעת חישובים, או לדתה בייס? כמו-כן: צומת בעץ יכול להיות כאמור גם משתנה, ז"א הצבעה לכניסה ב-map' זה יוצר מעגליות, איך מתפטרים ממנה? יש לבצע מחלקה נפרדת לקלט/פלט, אשמח מאד אם משהו יציע uml לבעיה
 

מעוין

New member
ניסיון.

1) עליך לקבל string ולבצע עליו מניופולציות. 2) עליך להחזיק מפה שאתה יכול לממש במערך דו ממדי. 3) עליך להכניס מידע לעץ שייצג את סדר הקדימויות של הביטוי המתמטי. 4) עליך לשלוף מן העץ את המידע בסדר הנכון. אני לא רואה בעיה של מעגליות למעט המקרה בו אתה תייצר אותו - a=a+5 יהיה סוג של קלט לא חוקי כי אחרת תהיה לך מעגליות ולכן כדאי לך גם לבדוק את הקלט ולמנוע אפשרויות לא רצויות. דרך נוספת למעגליות תהיה אם a=1+b כאשר b=1+c ו c=1+a ושוב יש לך מעגל.זה לא בעיה למנוע את זה על ידי בדיקה של הקלט. אני לא הייתי מקבל קלט של b לפני ש-b מוכר למערכת. זה נראה די פשוט ואני לא בטוח בצורך שלך להכביר במספר מחלקות. אני הייתי הולך על : צומת, עץ, והתוכנית הראשית. ניתן גם לכתוב מחלקה לכל המניפולציות והבדיקות שאתה מריץ על הקלט אבל אישית הייתי דוחף את זה בתוכנית הראשית. את הטיפול בקבצים תעשה בעזרת מחלקות שכותבות לקבצים שבאות עם כל תוכנה שתבחר.
 

עידו פ

New member
-->

1. ביטוי מתמטי כפי שכתבת אותו מכונה ביטוי ןinfix (או באנגלית - infix notation) - חפשי בגוגל ותמצאי מספיק אלגוריתמים פסאודו וקוד למימוש האלגוריתם 2. מבחינת מחלקות, אכן הגיוני לשמור מבנה של עץ (אני מניח שהאלגוריתמים שתמצאי ישתמשו בעץ או לפחות באיזשהי מחסנית). מבחינת המחלקה שתחזיק את המידע - אני מפנה אותך ל-Design pattern המכונה composite (את מוזמנת להסתכל בקישורים בנושאי Design Patterns). הרעיון של Composite הינו סט מחלקות אשר מיישמות קונספט של איבר שמורכב מאיברים שהם בעצמם יכולים להיות איברים מורכבים (ובמקרה שלך - ביטוי שמורכב מחלקי ביטויים שיש ביניהם אופרטור מתמטי) 3. אני לא רואה סיבה להשתמש ב-DB בשביל מה שאת צריכה לעשות (עבודה in-memory וכתיבת התוצאה לקובץ נשמעת מספקת) לגבי ההצבעה המעגלית - תסתכלי על הרעיון של composite, יכול להיות שזה יתן לך את הפתרון שאת צריכה
 
למעלה