מימוש פונקציה המחזירה מקסימום בין 2 מספרים ללא משפטי תנאי

bashib

New member
מימוש פונקציה המחזירה מקסימום בין 2 מספרים ללא משפטי תנאי

שלום,
נתקלתי בשאלה שבכותרת, לאחר שפתרתי, ראיתי כי הפתרון המוצע היה ארוך יותר ועבד על סיביות.
ניסיתי להריץ את הקוד שלי עם דוגמאות שונות (כולל מינוסים, אפסים וכו) ולא ראיתי שום בעיה, מצד שני, מוזר לי שהקוד המוצע היה מסובך יותר ואני חוששת שפיספסתי משהו.
מצרפת את הקוד ואשמח לשמוע הערות
קוד:
int max (int x, int y)
{
return ((x+y)+abs(x-y))/2;
}
 

Miki Watts

New member
תראי, בתכנות יש הרבה דרכים לפתור את אותה בעיה

רק בגלל שקוד מסויים מסובך פחות או יותר (או רק נראה ככה) לאו דווקא אומר שזה מתאים למה שאת צריכה.
&nbsp
לדוגמה, הקוד שצירפת פה (בלי קשר לתקינות שלו) מכיל חלוקה. במצבים שצריך ביצועים, לדוגמה אם זה בתוך הקוד גרעין של משחק גרפי כלשהו, הקוד הזה היה מאד איטי כי חלוקה זה משהו יחסית איטי, והקוד האחר שאת נתקלת בו היה כנראה יותר מהיר כי הוא עובד עם הביטים ללא חלוקה.
מצד שני, אם זה חלק מאפליקציה כלשהי שלא צריכה ביצועים (ולא, תוכנת CRUD פשוטה לא נחשבת למשהו כזה) את יכולה להריץ את החישוב הזה ללא בעיות וזה לא ישפיע או יהווה צוואר בקבוק לביצועים.
&nbsp
בנוסף לכך, בתכנות תמיד עדיף להימנע מתחכום יתר (מה שנקרא אובר חוכם), ולשמור על קריאות של הקוד, מאחר ו 90% מהעבודה עם הקוד זה לקרוא אותו ולהבין מה הוא עושה, ולכן סיבוך של הקוד רק כדי להגיד "תראו איזה גאון אני" בסופו של דבר פוגע בך או בזה שיבוא אחריך (ורוב הסיכויים שהוא יהיה פסיכופט רצחני שיודע איפה אתה גר).
&nbsp
לסיכום, אם הקוד שלך קריא וברור, ועומד בתנאי הזכרון/ביצועים/משאבים אחרים, אז זה בסדר גמור ועדיף על פני כל קוד אחר שעושה פליק פלאק באוויר רק כדי להשוויץ.
 

bashib

New member
מנסה ללמוד

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

למשל, כעת עולה בדעתי שאולי זה לא עומד בתנאי התרגיל כי המימוש של abs משתמש בתנאי if
 

Miki Watts

New member
לא אמרתי שאת מנסה להתחכם

זה היה מכוון לאתה כללי.
התייחסתי לכך שאמרת שהקוד האחר שאת ראית היה מסובך יותר ולכן את מטילה ספק בקוד שלך, ולכן אמרתי שרק בגלל שקוד מסויים מסובך פחות (או יותר!) לאו דווקא אומר שהוא נכון.
להבא אני מציע שתראי את שני קטעי הקוד כדי שנוכל להשוות ביניהם, ואז אפשר יהיה לדבר על ההבדלים ביניהם ספיציפית, ולא רק על תכונות קוד באופן כללי (כי יכול להיות הרבה מאד מימושים שונים אפילו לקוד כזה פשוט, אז אני לא יודע לאיזה קוד את התכוונת).
 
למעלה