כותב |
|
Madam משתמש מתחיל
הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת הודעות: 27
|
נשלח בתאריך: 21 January 2007 בשעה 23:10 | | IP רשוּם
|
|
|
|
שלום, ניסיתי לחפש מספר במערך באמצעות חיפוש בינארי. לא מופיעות לי שגיאות הידור אך המספר לא נמצא. ניסיתי לפתור כך:
Console.WriteLine("enter a number"); int num = int.Parse(Console.ReadLine()); int[] arr = new int[5] { 3, 67, 4, 4, 17 }; printarr(arr); Console.WriteLine("****"); bubbles(arr); printarr(arr); findarr(arr, num); } static void bubbles(int[] arr) { int temp = 0; for (int i = 1; i < arr.Length; i++) { for (int j = 0; j < arr.Length - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return; } static void printarr(int[] arr) { for (int i = 0; i < arr.Length; i++) { Console.WriteLine(arr[i]); } return; } static void findarr(int[] arr, int num) { int div = 0, j = 0, count = 0, index = 0, i = arr.Length - 1; while (j > i) { div = (j + i) / 2; if (num == arr[i]) { count++; index = div; } else if (num > arr
) { j = div; } else { i = div; } } if (num == arr[i]) { Console.WriteLine("the num {0} appears in index {1} {2} times", num, div, count); } else { Console.WriteLine("not found"); }
אשמח אם תעזרו לי לפתור את התרגיל , תודה
__________________ הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 22 January 2007 בשעה 11:37 | | IP רשוּם
|
|
|
|
למה הכל void ?
אני מציע שתנסי ללחוץ על F10 ולעבור צעד צעד ולראות מה לא קורה כמו שצריך (ותפתחי את החלון watch)
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
Madam משתמש מתחיל
הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת הודעות: 27
|
נשלח בתאריך: 22 January 2007 בשעה 12:27 | | IP רשוּם
|
|
|
|
אני עדיין לא מבינה מה הבעיה..
__________________ הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 22 January 2007 בשעה 13:29 | | IP רשוּם
|
|
|
|
קודם כל התנאי שלך בתחילת הפונקציה גרוע, אמור להיות j < i
חוץ מזה, כשאת מוצאת הפעולה שלך לא טובה (לא משנה את i או j ולכן גורמת ללואה אין סופית), אם את משום מה רוצה לבדוק כמה פעמים המספר מופיע את יכולה לעבור עם i שמאלה (ואח"כ ימינה) כל עוד המספר במקום i שווה למספר שמחפשים.
ויש כל מיני דברים קטנים כמו שב-j צריך להוסיף (i + j) % 2 ושבבדיקות שלך עשית arr במקום i במקום במקום div...
וכל מיני דברים שכמו שאמרתי אפשר לראות ע"י מעקב שלב אחר שלב ובדיקת ערכים.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
Madam משתמש מתחיל
הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת הודעות: 27
|
נשלח בתאריך: 22 January 2007 בשעה 13:33 | | IP רשוּם
|
|
|
|
static void findarr(int[] arr, int num(
{
int start = 0, end = arr.Length, mid = 0;
while (start < end && num != arr[mid])
{
mid = (start + end) / 2;
if (num > arr[mid])
{
start = mid;
}
else
{
end = mid;
}
}
if (num == arr[mid])
{
Console.WriteLine("the num {0} is found in index {1}", num, mid);
}
else
{
Console.WriteLine("not found");
}
return;
ניסיתי כך והתשובה עדיין לא נכונה
__________________ הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 22 January 2007 בשעה 15:57 | | IP רשוּם
|
|
|
|
שתי שאלות:
- למה השינויים האלה ? המצב הרבה יותר גרוע.
- לא לימדו אותכם שפונקציה יכולה להחזיר ערך ולא הכל void ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
Madam משתמש מתחיל
הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת הודעות: 27
|
נשלח בתאריך: 22 January 2007 בשעה 16:13 | | IP רשוּם
|
|
|
|
אממ..היה נראה לי פשוט וטוב יותר לכתוב כך מאשר להסתבך עם עוד משתנים.דבר שני,
רק התחלנו עם פונקציות, ועדיין לא בא לי טבעי להשתמש בסוגים השונים.
__________________ הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 22 January 2007 בשעה 17:44 | | IP רשוּם
|
|
|
|
עשית עוד שינויים חוץ מהמשתנים.
ויש גם את השטות עם ה-mid שפעם הוא ערך ופעם אינדקס...
בכל מקרה, אני רק רוצה להזכיר שוב שאם תלחצי F11 במקום F5 כדי לבדוק את התכנית, את תוכלי לעבוד צעד אחד צעד ולבדוק מה קורה ומה לא טוב.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|