ערכתי לאחרונה בתאריך 02.05.11 בשעה 01:04 בברכה, TYSON
עשיתי וזה נותן לי מלא ארורים
על שורות בפונקציה כמו
אני לא מבין איך אפשר באמת להשתמש ב const ויש לי פעולות השמה על כתובות?
לזה התכוונת?
או שאני אשאל את זה אחרת... אולי לא הסברתי את זה טוב
חובה לקלוט את התווים כמחרוזת... כ char
הפונקציה שפותרת את התרגיל, בין היתר שולחת לפונקציה שממירה את הchar לint
ועוד כל מיני דברים בדרך... עובדת מצויין
אבל בתרגילים בסיסים של 9^2 למשל...
כשאני מכניס סוגריים בתוך סוגריים הכל נדרס לי
זה הקוד
buf - התרגיל עצמו... נקלט כמחרוזת כולל הסוגריים והכל
first - צד שמאל של התרגיל - החלק הראשון שלו
last - צד ימין של התרגיל - החלק השני שלו
sign - הפעולה
eval_comp - מקבל את הפעולה, המספר השמאלי, והימני, ומחזיר פתרון כ int
int eval ( char *buf, char *first, char *last) { char current=0; static char sign=0; static int i=0, j=0; if(buf==0||first==0||last==0) return sign; if(*buf=='(') return eval(buf+1,first,last); if(*buf==')') return eval_comp(first-i,sign,last-j); current = *buf; if(current==0) return eval_comp(first-i,sign,last-j); // We already found the sign, we can set the value in the 2nd expression if(sign!=0) { *last=*buf; j++; return eval(buf+1,first,last+1); } else { if(*buf=='+'||*buf=='^'||*buf=='*'||*buf=='/'||*buf=='%'||*buf=='c'||*buf=='s') { sign = current; return eval(buf+1, first, last); } *first=*buf; i++; return eval(buf+1,first+1,last); } }
|