מציאת אלגוריתם לפתירת ביטוי מתמטי עם סוגריים

מציאת אלגוריתם לפתירת ביטוי מתמטי עם סוגריים

היי לכולם, יש לי בעיה בתרגיל שאני צריכה להגיש.. יש לי מערך של char* שמכיל בתוכו ביטוי מתמטי לדוגמא: (5+6)*5 הביטוי כמובן לא ידוע מראש.. אני צריכה לכתוב פונקציה שתפתור את הביטוי לפי סדר פעולות חשבון.. ותחזיר את התוצאה המדוייקת.. (כלומר duble) בעיקרון התרגיל הוא בשפת CPP.. אבל אשמח אפילו לקבל פתרון אלגוריתמי כלשהו.. אם מישהו מכיר את השאלה\מכיר מקום שיש את התשובה\יודע את התשובה בעצמו.. אשמח לעזרה מהירה תודה מראש, אתי
 
לא ככ הבנתי איך זה עובד..

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

Maha Vailo

New member
תחשבי רקורסיה

אם היה נתון לך תרגיל "פשוט" שמורכב רק מסוגריים חיצוניות, מספרים ופעולות חשבון, אפשר לפתור אותו יחסית בקלות, למשל ע"י שמירת הערך הכולל של הביטוי עד לאותו רגע, ועוד ערך זמני ששומר את המכפלה הנוכחית. למשל עבור z (1+2*3+4) z אז בהתחלה הערך הכולל הוא אפס, אחר כך מוסיפים 1. אחר כך מתחילים את המכפלה (הערך הזמני) עם 2, מכפילים בשלוש ומקבלים 6. המכפלה הסתיימה ולכן מוסיפים 6 לביטוי שהתקבל ולכן הערך הכולל הופך לשבע, נותר רק להוסיף עוד את 4. עכשיו , כדי לעשות את התכנית לכללית יותר, כל פעם שהתוכנית שלך יודעת שהיא צריכה לקרוא מספר (למשל אחרי סימן כפל) אז היא תבדוק אם יש סוגריים. אם אין, היא תקרא מספר באופן רגיל, אחרת קריאה רקורסיבית שתחשב את הערך בתוך הסוגריים ואת הסוגר הימני שמסיים אותו וממשיכים משם.
 
למעלה