עבור לתוכן

בעיות עם מיונים של מערך חד מימדי C#

Featured Replies

פורסם

יש לי בעיה בהבנה של חיפוש לינארי ובינארי,אפשר לקבל הסבר?.

יש לי עוד בעיה בשאלה הזו:

8. כתוב תוכנית, שקולטת וקטר בן 20 איברים מספריים שונים, ומדפיסה האם הוקטור ממוין מיון עולה, מיון יורד, או שאינו ממוין.

אני אודה לכל מי שיענה פשוט מחר יש לי מבחן ואני חייב עזרה.


using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
int[] vec = new int[6];
int l = vec.Length;
int i;

Console.WriteLine("type {0} integers", l);
for (i = 0; i < l; i++)
vec[i] = int.Parse(Console.ReadLine());
for (i=vec[0];i<vec[6] ;i--)
{
if (vec[i] < vec[i + 1])
Console.Write("uper sort");
else
if (vec[i] > vec[i + 1])
Console.Write("down sort");
else
Console.WriteLine("unsorted");
}
}
}
}

פורסם

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

http://he.wikipedia.org/wiki/%D7%97%D7%99%D7%A4%D7%95%D7%A9_%D7%91%D7%99%D7%A0%D7%90%D7%A8%D7%99

פורסם

להלן הצעתי:

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int [] vect = new int[5];
int dir = 0;
bool stop = false;
for(int i=0; i < 5; i++)
vect[i] = int.Parse(Console.ReadLine());
for(int i=1; i < 5 && !stop; i++)
{
if(dir == 0)
if(vect[i] > vect[i-1])
dir = 1;
else
dir = -1;
if((dir == -1 && vect[i] > vect[i-1]) || (dir == 1 && vect[i] < vect[i-1]))
stop = true;
}

if(stop == false)
{
if(dir == -1)
Console.WriteLine("Down sort");
else
Console.WriteLine("Upper Sort");
}
else
Console.WriteLine("Unsorted");


}
}

}

פורסם
  • מחבר

אתה יכול להסביר לי למה השתמשת ב bool מה זה ולה דווקא זה false?. למדנו את זה אבל אני לא הבנתי וודה על העזרה המהירה אתם לא מבינים כמה אני שמח!!!

פורסם

בשביל לעצור את הלולאה כשstop = true .

bool זה סוג של משתנה שמקבל 2 ערכים או FALSE או TRUE, זה הכל ;)

פורסם
  • מחבר

אגב התוכנית לא עובדת

פורסם

ערכתי את זה, נסה שוב

פורסם
  • מחבר

יש לך מסנג'ר?

יש ליכמה שאלות אני ממש אשמח אם תוכל להביא לי אותו.

פורסם

תשאל פה

פורסם
  • מחבר

אוקי:{.

12. כתוב תוכנית שמבצעת חיפוש בינארי (שיטת החציה) בוקטור ממוין מיון עולה.

13. מיזוג (merge ) - כתוב תוכנית שקולטת שני וקטורי ממוינים מיון בלתי יורד, וממזגת אותם לוקטור שלישי הממוין מיון בלתי יורד.

14. כתוב תוכנית שקולטת וקטור שנמצאים בו אפסים. עליך לצופף את הנתונים ששונים מאפס, ו"לזרוק" את האפסים לסוף.

לא הצלחתי אף אחת!. תודה רבה לך על העזרה,אגב עד מתי אתה תיהיה מחובר מערך?[br]פורסם בתאריך: 24.02.2009 בשעה 17:39:39


למה הכוונה !stop

שהוא אמת?

פורסם

אוקי:{.

12. כתוב תוכנית שמבצעת חיפוש בינארי (שיטת החציה) בוקטור ממוין מיון עולה.

13. מיזוג (merge ) - כתוב תוכנית שקולטת שני וקטורי ממוינים מיון בלתי יורד, וממזגת אותם לוקטור שלישי הממוין מיון בלתי יורד.

14. כתוב תוכנית שקולטת וקטור שנמצאים בו אפסים. עליך לצופף את הנתונים ששונים מאפס, ו"לזרוק" את האפסים לסוף.

לא הצלחתי אף אחת!. תודה רבה לך על העזרה,אגב עד מתי אתה תיהיה מחובר מערך?[br]פורסם בתאריך: 24.02.2009 בשעה 17:39:39


למה הכוונה !stop

שהוא אמת?

stop! זה אותו הדבר כמו לשאול stop == false .

לגבי שאלה 11 12 יש דוגמאות לזה בויקיפדיה ואפילו הסברים.

לגבי שאלה 14 אפשר להשתמש בעיקרון של מיון בועות ככה שהאפסים עולים למעלה כמו בועות:

using System;


namespace bubble
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[5];
for (int i = 0; i < 5; i++)
arr[i] = int.Parse(Console.ReadLine());

for (int i = 0; i < 5; i++)
for (int j = 0; j < 5 - i-1; j++)
if (arr[j] == 0)
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}

for (int i = 0; i < 5; i++)
Console.Write(arr[i] + " ");

}
}
}

[br]פורסם בתאריך: 24.02.2009 בשעה 17:50:56


דרך נוספת:

using System;

namespace Targil
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[5];
for (int i = 0; i < 5; i++)
arr[i] = int.Parse(Console.ReadLine());
int LastZero;
for (LastZero = 4; LastZero >= 0 && arr[LastZero] == 0; LastZero--)
{
}

for (int i = 0; i < LastZero; i++)
{
if (arr[i] == 0)
{
int temp = arr[i];
arr[i] = arr[LastZero];
arr[LastZero] = temp;
LastZero--;
}
}

for (int i = 0; i < 5; i++)
Console.Write(arr[i] + " ");
}
}
}

פורסם
  • מחבר

איך אני יכול לדעת מתי להתמש במשתנה בוליאני?

פורסם

מתי שיש לך 2 מצבים

פורסם
  • מחבר

אני חושב שהבנתי אתה יכול לתת לי כמה דוגמאות,או שאלות שאני אבין?

אני לא מוצא שום מקור בגוגל שיכול להסביר את זה והספר שלנו על הפרצוף אני משתגגע :bash: :bash: :bash: :bash: :kopfpatsch: :'(

פורסם

אני חושב שהבנתי אתה יכול לתת לי כמה דוגמאות,או שאלות שאני אבין?

אני לא מוצא שום מקור בגוגל שיכול להסביר את זה והספר שלנו על הפרצוף אני משתגגע :bash: :bash: :bash: :bash: :kopfpatsch: :'(

/quote]

אני אנסה להסביר, ברשותכם,

משתנה בוליאני הוא משתנה שיכול להכיל true או false.

הוא לא יכול להכיל שום מספר \ תו \ כל דבר אחר.

נוח (וכדאי..) להשתמש במשתנה הזה במצב בוליאני - מצב שיכול להיות כן או לא.

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

לדוג',

אם יש מערך כזה:

1 4 3 4 5 6 8 9

המערך הזה לא יהיה נכון מכיון ש-4 גדול מ-3.

לכן, בדוג' הנ"ל נוח להשתמש במשתנה בוליאני ולשנות אותו (מאמת לשקר או משקר לאמת, לפי מה שהחלטת [אני כבר לא זוכר איך פתרו בשבילך את התרגיל]) ברגע שיודעים כבר שהמערך לא מתאים כדי למנוע הרצות נוספות מיותרות.

מקווה שזה מובן.... :)

ארכיון

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

דיונים חדשים