עבור לתוכן

שאלה בC# מערכים

Featured Replies

פורסם

היי אני צריך עזרה בשאלה הבאה:

''כתוב פעולה המקבלת שני מערכים ממויינים(ללא חזרות) ומחזירה מערך המכיל את כל המס' הקיימים במערך הראשון ואינם קיימים במערך השני''.


public static int[] Exist(int[] a, int[] b)
{
int iA = 0, iB = 0, iC = 0;
int[] c = new int[Math.Max(a.Length, b.Length)];
while (iC < a.Length && iC < b.Length)
{
if (a[iA] != b[iB])
{
c[iC] = a[iA];
iC++;
}
if (a[iA] < b[iB])
iA++;

if (a[iA] > b[iB])
iB++;

if (a[iA] == b[iB])
{
iA++;
iB++;
}
}
return c;
}

static void Main(string[] args)
{
int[] arr = new int[6] { 2, 5, 7, 8, 13, 17 };
int[] arr2 = new int[7] { 3, 7, 17, 70, 71, 75, 80 };
int[] arr3 = Exist(arr, arr2);
for (int i = 0; i < arr3.Length; i++)
Console.WriteLine(arr[i]);
}
}
}

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

אם מישהו יוכל להסביר לי איך עושים את זה אני אודה לו מאוד..

תודה!

פורסם

1) iC הוא אינדקס לתוצאה. ב- if אתה בודק את האינדקס של התוצאה עם האורכים של המקורות.

2) שים לב שהלולאה הזו לא מספיקה. תחשוב מה קורה אם המערכים שונים בגודלם.

פורסם
  • מחבר

1) iC הוא אינדקס לתוצאה. ב- if אתה בודק את האינדקס של התוצאה עם האורכים של המקורות.

2) שים לב שהלולאה הזו לא מספיקה. תחשוב מה קורה אם המערכים שונים בגודלם.

1.לא הבנתי ממש למה אתה מתכוון

2. אני יודע שצריך עוד לולאה ל''זנב'' שנשאר אבל רציתי קודם כל שהקטע הנוכחי יעבוד ואז להוסיף אותו..

פורסם

התכוונתי ב- WHILE, לא ב- IF:

while (iC < a.Length && iC < b.Length

iC הוא לא אינדקס ב a או ב b, אלא ב- c. עלייך לבדוק עם האינדקסים המתאימים.

כדאי לך לתת למערכים שמות ברורים יותר.

פורסם
  • מחבר

התכוונתי ב- WHILE, לא ב- IF:

while (iC < a.Length && iC < b.Length

iC הוא לא אינדקס ב a או ב b, אלא ב- c. עלייך לבדוק עם האינדקסים המתאימים.

כדאי לך לתת למערכים שמות ברורים יותר.

תודה על העזרה בינתיים.

שינתי בwhile במקום iC לiA וiB ועכשיו כשאני מריץ אני מקבל:

2

5

7

8

13

17

ואז שגיאה index was outside of the bounds of the array

למה אני מקבל פלט ואז שגיאה?

תודה

פורסם

כי יש סיכוי שאתה לא ממלא את כל המערך, רק חלק ממנו ? במקום ליצור מערך בהתחלה שאתה לא יודע מה יהיה הגודל הסופי שלו, תיצור List מסוג int ותוסיף לה ערכים עם Add כל הזמן ובסוף תחזיר ToArray()

ארכיון

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

דיונים חדשים