עבור לתוכן

עזרה| מערך חד מימדי C#

Featured Replies

פורסם

עליי לכתוב פעולה אשר מקבל מערך מסדרת אותו מהמספר הקן לגדול ומחיזרה את המערך המסודר



static int[] Da(int[] a, int x)

{

int[] b = new int[a.Length - 1];

for(int i=0;i<a.Length;i++)

{

if (i == x) break;

else b[i] = a[i];

}

return b;

}

static int[] Ma(int[] a)

{

int[] b = new int[a.Length];

int[] c = a;

int p=0;

for (int i = 0; i < a.Length; i++)

{

int min = c[0];

for (int j = 0; j < c.Length; j++)

{

if (c[j] < min)

{

min = c[j];

p = j;

}

}

c = Da(c, p);

b[i] = min;


}

return b;

}

static void Main(string[] args)

{

int[] t = { 2, 3, 1,4,5,7,6 };

t = Ma(t);

for (int i = 0; i < t.Length; i++)

Console.Write(t[i] + " ");

}

זה מה שכתבתי אבל לא הולך לא יודע למה ניסיתי לעקוב צעד אחר צעד אבל לא הבנתי

קיצר לקחתי את המערך חיפשתי את הערך הקטן היותר שמתי אותו במערך חדש ולאחר מכן "גזרתי את הערך הזה (הקטן ביותר) מהמערך וכך עד לסוף רק שבמספר האחרן זה לא עושה עזרה בבקשה!!!????

פורסם

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

אני מציע לך לחפש על מיון בועות זה המיון הכי פשוט להבנה..

אני פשוט מנסה לקרוא את הקוד אבל הוא ממש לא ברור ..מה זה Ma ו Da .. תכתוב שמות יותר משמעותיים כמו sort ו - find_min ...

פורסם

ערוך בבקשה את הכותרת כך שתכיל את השפה שבה אתה מתכנת.

חוץ מזה, קשה לקרוא את הקוד שלך. דאג להזיח אותו כהלכה.

ולגבי השאלה עצמה, כמו שאמר זה שמעליי - חפש מיון בועות (bubble sort) בויקיפדיה.

פורסם
  • מחבר

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

אני מציע לך לחפש על מיון בועות זה המיון הכי פשוט להבנה..

אני פשוט מנסה לקרוא את הקוד אבל הוא ממש לא ברור ..מה זה Ma ו Da .. תכתוב שמות יותר משמעותיים כמו sort ו - find_min ...

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


static int[] G(int[] a,int x)
{
int[] b = new int[a.Length - 1];
int count = 0;
for (int i = 0; i < a.Length; i++)
{
if (i != x)
{
b[count] = a[i];
count++;
}
}
return b;
}

static int[] B(int[] a)
{
int[] b = new int[a.Length];
int[] c = a;
int r = 0;
for (int i = a.Length - 1; i >= 0; i--)
{
int max = c[0];
int j = 0;
r = j;
for (j = 0; j < c.Length; j++)
if (c[j] > max)
{
max = c[j];
r = j;
}
b[i] = max;
c = G(c, r);
}
return b;
}

static void Main(string[] args)
{
int[] ar = { 9,1,3,4,6,7,8,2,5 };
ar = B(ar);
for (int i = 0; i < ar.Length; i++)
Console.Write(ar[i] + " ");
Console.WriteLine();
}





פורסם

הקוד שלך מסורבל כמו החיים...

תסתכל על הפונקציה G (שאני עדיין לא סגור על מה היא עושה) - הלולאה שבה לחלוטין מיותרת!

פורסם
  • מחבר

הקוד שלך מסורבל כמו החיים...

תסתכל על הפונקציה G (שאני עדיין לא סגור על מה היא עושה) - הלולאה שבה לחלוטין מיותרת!

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

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

פורסם

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

    static void Main(string[] args)
{
int[] ar = { 9, 1, 3, 4, 6, 7, 8, 2, 5 };
Sort(ar);
//print the sort array
for (int i = 0; i < ar.Length; i++)
Console.Write(ar[i] + " ");
}
static void Sort(int[] ar)
{
int temp;
for (int i = 0; i < ar.Length; i++)
for (int j = 0; j < ar.Length - i - 1; j++)
if (ar[j] > ar[j + 1])
{
temp = ar[j];
ar[j] = ar[j + 1];
ar[j + 1] = temp;
}
}

זה מיון בועות.. שוב פעם הצלחת אבל זה לחלוטין לא ברור מה כתבת..

גם שאתה כותב if וכותב קוד רק ב else זה לא יפה לכתוב ככה ולא ברור..פשוט תשנה את התנאי שלך ל != במקום ==

הסתבכת יותר מדיי עם השיטה שלך לטעמי

ארכיון

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

דיונים חדשים