לגאונים בלבד?

לגאונים בלבד?../images/Emo12.gif

היי כולם, נתקלתי בשאלה מוזרה במהלך תוכנית שעשיתי. אחרי שייגעתי את המוח שלי הרבה זמן, אולי אתם תוכלו לעזור בבקשה ולומר לי מה הבעיה בה.
(define (sum_resh reshima) (cond ((null? (cdr reshima)) (car reshima)) (else (+ (car reshima) (sum_resh (cdr reshima)))))) (define (mis_evar reshima) (cond ((null? (cdr reshima)) 1) (else (+ 1 (mis_evar (cdr reshima)))))) (define (memuza reshima) (cond ((= (mis_evar reshima) 1) (car reshima)) (/ (sum_resh reshima) (mis_evar reshima)))) **ex**: (memuza (list 4)) (mis_evar (list 1 2 3 4 5 6)) (sum_resh (list 1 2 3 4 5 6)) (memuza (list 1 2 3 4 5 6))​
ואני חייבת לכם הסבר: 2 הפונקציות הראשונות עובדות מצויין, ומחזירות ערכים מצויין- בדיוק כמו שהן צריכות לעשות. המוזר הוא שדווקא הפונקציה השלישית- שאמורה סך-הכל לחלק את סכום הראשונה בסכום של השניה- מחזירה תוצאות שגויות... גאונים, כבר אמרתי? תודה רבה למי שיעזור (וגם למי שלא) בתוש:)
 

erezsh

New member
תוצאות שגויות

מהן? כלומר, תני דוגמא למה ציפית ומה קיבלת במקום..
 

ahab

New member
cond...

תסתכלי שוב איך השתמשת ב-cond בפונקציה memuza. דבר נוסף (ולא כל-כך קשור), הפונקציות לחישוב מספר איברים וסכום איברים יודעות להסתדר עם רשימה בת איבר אחד. למה להתייחס למקרה הלא-מיוחד הזה בנפרד ב-memuza?
 
צודק...

תיקנתי לפי 2 ההערות שלך. עכשיו זה עובד מצויין. (מי שוכח else???
ובקשר למקרה ה"לא-מיוחד" כהגדרתך עשיתי במקומו מקרה של רשימה ריקה.) תודה רבה, בתוש
 
למעלה