Statement פורסם 2014 במרץ 30 Share פורסם 2014 במרץ 30 שלוםעשיתי את השיטה הזאת -כתבו שיטה במחלקה DrawingBoard בשם getMax שתחזיר את הצורה (מחלקה Shape) בעלת השטח המקסימלי מבין כל הצורות שבלוח. הדפסת פרטי האובייקט המוחזר תהיה בשיטה הראשית.יש לי שיטת עזר בשם compare שבודקת למי יש את השטח הגדול ביותר s זה מערך של Shapepublic Shape getMax(){ int i; int x; for( i=0; i<counter;){for (x=1;x<counter;){if(s[i].Compare(s[x])==1) x++;else if(s[i].Compare(s[x])==-1)i++;else x++;}if(s[i].Compare(s[x])==1) return s[i];else if (s[i].Compare(s[x])==-1) return s[x];else return s[i];}}איפה שרשום getMax יש לי אדום(שגיאה) ורשום לי שאני צריך להחזיר Shape... מה אני צריך לעשות?כל המקומות שיש שם את החלקים מהמערך שמוחזרים הם לא Shape גם ??תודה בכל מקרהאילי קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2014 במרץ 30 Share פורסם 2014 במרץ 30 תעיף את ה-else האחרון קישור לתוכן שתף באתרים אחרים More sharing options...
Statement פורסם 2014 במרץ 30 מחבר Share פורסם 2014 במרץ 30 תעיף את ה-else האחרוןזה לא קשור אחי, פשוט שיטח העזר Compare בנויה בצורה שהיא מחזירה 1 אם האובייקט המפעיל גדול 2 אם האובייקט המופעל גדול 3 אם הם שוויםאז אני צריך להשאיר את זה לדעתי אני פשוט מחזיר הפנייה אבל אני לא יודע איך לסדר את זה...- - - תגובה אוחדה: - - -תעיף את ה-else האחרוןזה לא קשור אחי, פשוט שיטח העזר Compare בנויה בצורה שהיא מחזירה 1 אם האובייקט המפעיל גדול 2 אם האובייקט המופעל גדול 3 אם הם שוויםאז אני צריך להשאיר את זה לדעתי אני פשוט מחזיר הפנייה אבל אני לא יודע איך לסדר את זה...זה השיטה comparepublic int Compare(Shape s){ if (Area() >s.Area()) return 1; else if(Area() <s.Area())return -1; else return 0;} קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 במרץ 31 Share פורסם 2014 במרץ 31 הבעיה היא שעשית return רק בתוך ה-for. הקומפיילר דורש שבכל מסלול אפשרי של ביצוע של הפונקציה, הוא יגיע ל-return. לקומפיילר אין דרך לדעת מראש אם התנאי שב-for יתקיים או לא, ולכן הוא לא יכול להיות בטוח ב-100% שתגיע ל-return הזה.(בכלל, לא ברור לי מה הצורך ב-for החיצוני)חוץ מזה, שני טיפים כלליים:א. תדאד להזחות מסודרות של הקוד.ב. תמיד תמיד תמיד אחרי if ו-else שמים סוגריים מסולסלים, גם אם זו רק פקודה אחת. זה הופך את הקוד להרבה יותר קריא.ג. יש לך קריאות מיותרות ל-compare - אתה קורא לה פעמיים בכל איטרציה במקום רק פעם אחת. תשתמש במשתנים.ד. להבא, אל תאמר לנו רק "יש שגיאה". תאמר מה השגיאה בדיוק. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.