עבור לתוכן

בניית מחקלה שמייצגת קבוצה של מספרים ב - JAVA

Featured Replies

פורסם

שלום. אני מנסה ליצור מחלקה שתייצג קבוצה של מספרים שלמים חיוביים בלבד. לכל קבוצה יהיה פרמטר בשם 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");
}

האם ככה הקוד אמור להיראות ?, אשמח לתשובה. תודה.

  • תגובות 31
  • צפיות 4.9k
  • נוצר
  • תגובה אחרונה

משתתפים בולטים בדיון

פורסם

מה אמורה לעשות השורה הזו?

	n = int[1] n;

זה לא תחביר תקני.

פורסם

אתה בכיוון הנכון: אתה צריך מערך בגודל 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

פורסם
  • מחבר

השורה

n = int[1] n;

אמורה לגרום לבנאי ליצור קבוצה בגודל 1.

עכשיו השיטה נראית ככה:

public Set(int n)
{
if (N <= 0 )
{
N = [1];
System.out.println("N");
}
}

האם כך הקוד אמור להראות ?

לא הבנתי את המשפט הראשון שלך. אתה יכול לנסות להסביר אותו שוב ויותר בפירוט ?

פורסם

קודם כל, הקוד שאתה כותב נראה לי לא נכון. זה מתקמפל לך?

ומה שאני אמרתי זה שדרך מתאימה לייצג קבוצה של מספרים מ-0 עד N-1 זה להשתמש במערך בגודל N אשר אומר לכל מספר אם הוא נמצא או לא נמצא בקבוצה.

פורסם

מושיקו, עשה לעצמך טובה - תחזור קצת על החומר של מערכים, מחלקות ובנאים. הקוד שלך לא נכון מבחינה תחבירית, וקצת קשה לממש מחלקה כשאתה לא יודע איך יוצרים מערך.

פורסם
  • מחבר

הקוד לא מתקמפל לי. הוא נותן לי שגיאה על ה - " = " של ה:

N = [1];

. איך אני יכול לתקן את השגיאה ?

והאם אני אמור ליצור את הקוד לפי מה שאמרת בבנאי הספציפי הזה ?

פורסם

אני חוזר ואומר:

מושיקו, עשה לעצמך טובה - תחזור קצת על החומר של מערכים, מחלקות ובנאים. הקוד שלך לא נכון מבחינה תחבירית, וקצת קשה לממש מחלקה כשאתה לא יודע איך יוצרים מערך.

פורסם
  • מחבר

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

פורסם

לביטוי כזה:

N = [1]

אין משמעות. אם אתה רוצה לשים ב-N את הערך 1, אז עושים ככה:

N = 1

ואם אתה רוצה ליצור מערך בגודל N, אז צריך לעשות ככה:

int[] arr = new int[N];

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

פורסם
  • מחבר

אני לא מצפה שתלמדו אותי הכל מאפס.

הקוד נראה ככה עכשיו:

public Set(int n)
{
if (n <= 0 )
{
int[] arr = new int[N];
}
}

עכשיו יש לו משמעות ?

פורסם

כן, אבל כיוון ש-arr הוא משתנה מקומי, ולא איבר של המחלקה Set, אז הוא לא יישמר בשום מקום, ויימחק כשתצא מהבנאי.

תחזור על איך בונים מחלקה, איך מגדירים בה איברים, ואיך שמים בהם ערכים.

פורסם
  • מחבר

או קיי, הגדרת את arr בתור משתנה מקומי, ושמתי בו ערך, אבל עדיין יש לי שגיאה על ה - N ב :

int[] arr = new int [N];

הוא נותן לי את השגיאה הבאה : Type mismatch: cannot convert from int[] to int. מה אני יכול לעשות כדי לפתור את השגיאה ?

פורסם
  • מחבר

public class Set {
private int[] N;
private int temp;


public Set(int n)
{
if (n <= 0 )
{
int[] arr = new int[N];
}
}

מצורפים המשתנים ששמתי למחלקה והבנאי שאני מנסה ליצור.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים