פורסם 2009 בדצמבר 3015 שנים שלום. אני מנסה ליצור מחלקה שתייצג קבוצה של מספרים שלמים חיוביים בלבד. לכל קבוצה יהיה פרמטר בשם N. פרמטר זה יקבע את גודל הקבוצה המקסימלי האפשרי (כלומר – מספר האיברים המקסימלי שיכולים להיות בקבוצה). איברי הקבוצה כולם יהיו בתחום בין 0 ל- N-1. למשל, אם N יהיה שווה ל-10, אזי הקבוצה יכולה להכיל עד עשרה איברים, שכולם חייבים להיות בין אפס ל-9 כולל. כל איבר בקבוצה יכול להופיע רק פעם אחת – אין חזרה של איברים. לכל אחת מהשיטות הבאות ישנה דרישת סיבוכיות מקסימלית מותרת. בכל השיטות, דרישות היעילות מתייחסות לפרמטר N. אני מנסה ליצור בנאי שייצור קבוצה ריקה שיכולה להכיל n איברים. אם n קטן או שווה לאפס, הבנאי יצור קבוצה בגודל 1. סיבוכיות זמן נדרשת – O(1). כתבתי עד כה את מבנה הקוד הבא :public Set(int n) if(n<=0) { n = int[1] n; System.out.println("n"); }האם ככה הקוד אמור להיראות ?, אשמח לתשובה. תודה.
פורסם 2009 בדצמבר 3115 שנים אתה בכיוון הנכון: אתה צריך מערך בגודל N אשר לכל תא i בתוכו הוא יהיה true אם i בקבוצה או false אם i לא בקבוצה.עבור N קטן או שווה ל-0, תגדיר את N להיות 1.if (N <= 0 ) N = 1;// now N is valid, so just keep working with N
פורסם 2009 בדצמבר 3115 שנים מחבר השורהn = int[1] n;אמורה לגרום לבנאי ליצור קבוצה בגודל 1.עכשיו השיטה נראית ככה:public Set(int n) { if (N <= 0 ) { N = [1]; System.out.println("N"); } }האם כך הקוד אמור להראות ?לא הבנתי את המשפט הראשון שלך. אתה יכול לנסות להסביר אותו שוב ויותר בפירוט ?
פורסם 2009 בדצמבר 3115 שנים קודם כל, הקוד שאתה כותב נראה לי לא נכון. זה מתקמפל לך?ומה שאני אמרתי זה שדרך מתאימה לייצג קבוצה של מספרים מ-0 עד N-1 זה להשתמש במערך בגודל N אשר אומר לכל מספר אם הוא נמצא או לא נמצא בקבוצה.
פורסם 2009 בדצמבר 3115 שנים מושיקו, עשה לעצמך טובה - תחזור קצת על החומר של מערכים, מחלקות ובנאים. הקוד שלך לא נכון מבחינה תחבירית, וקצת קשה לממש מחלקה כשאתה לא יודע איך יוצרים מערך.
פורסם 2009 בדצמבר 3115 שנים מחבר הקוד לא מתקמפל לי. הוא נותן לי שגיאה על ה - " = " של ה:N = [1];. איך אני יכול לתקן את השגיאה ?והאם אני אמור ליצור את הקוד לפי מה שאמרת בבנאי הספציפי הזה ?
פורסם 2009 בדצמבר 3115 שנים אני חוזר ואומר:מושיקו, עשה לעצמך טובה - תחזור קצת על החומר של מערכים, מחלקות ובנאים. הקוד שלך לא נכון מבחינה תחבירית, וקצת קשה לממש מחלקה כשאתה לא יודע איך יוצרים מערך.
פורסם 2009 בדצמבר 3115 שנים מחבר אני מבין במערכים מחלקות ובנאים, אני פשוט צריך את העזרה שלכם, כי במשימה הזו אני באמת לא מסתדר.
פורסם 2009 בדצמבר 3115 שנים לביטוי כזה:N = [1]אין משמעות. אם אתה רוצה לשים ב-N את הערך 1, אז עושים ככה:N = 1ואם אתה רוצה ליצור מערך בגודל N, אז צריך לעשות ככה:int[] arr = new int[N];אם אתה לא יודע את זה ובכל זאת מתעקש שנעזור לך עם התרגיל, אל תצפה שנלמד אותך הכל מאפס.
פורסם 2010 בינואר 115 שנים מחבר אני לא מצפה שתלמדו אותי הכל מאפס.הקוד נראה ככה עכשיו:public Set(int n) { if (n <= 0 ) { int[] arr = new int[N]; } }עכשיו יש לו משמעות ?
פורסם 2010 בינואר 115 שנים כן, אבל כיוון ש-arr הוא משתנה מקומי, ולא איבר של המחלקה Set, אז הוא לא יישמר בשום מקום, ויימחק כשתצא מהבנאי.תחזור על איך בונים מחלקה, איך מגדירים בה איברים, ואיך שמים בהם ערכים.
פורסם 2010 בינואר 115 שנים מחבר או קיי, הגדרת את arr בתור משתנה מקומי, ושמתי בו ערך, אבל עדיין יש לי שגיאה על ה - N ב :int[] arr = new int [N];הוא נותן לי את השגיאה הבאה : Type mismatch: cannot convert from int[] to int. מה אני יכול לעשות כדי לפתור את השגיאה ?
פורסם 2010 בינואר 115 שנים מחבר public class Set { private int[] N; private int temp; public Set(int n) { if (n <= 0 ) { int[] arr = new int[N]; } }מצורפים המשתנים ששמתי למחלקה והבנאי שאני מנסה ליצור.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.