נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה בסיסית בC#

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
Madam
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת
הודעות: 27
נשלח בתאריך: 21 January 2007 בשעה 23:10 | IP רשוּם
ציטוט Madam

 

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


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");
            }


אשמח אם תעזרו לי לפתור את התרגיל , תודה



__________________
הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
חזרה לתחילת העמוד הצג את כרטיס החבר של Madam חפש הודעות אחרות של Madam
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 22 January 2007 בשעה 11:37 | IP רשוּם
ציטוט shoshan

למה הכל void ?

אני מציע שתנסי ללחוץ על F10 ולעבור צעד צעד ולראות מה לא קורה כמו שצריך (ותפתחי את החלון watch)



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
Madam
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת
הודעות: 27
נשלח בתאריך: 22 January 2007 בשעה 12:27 | IP רשוּם
ציטוט Madam

אני עדיין לא מבינה מה הבעיה..

__________________
הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
חזרה לתחילת העמוד הצג את כרטיס החבר של Madam חפש הודעות אחרות של Madam
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 22 January 2007 בשעה 13:29 | IP רשוּם
ציטוט shoshan

קודם כל התנאי שלך בתחילת הפונקציה גרוע, אמור להיות j < i

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


ויש כל מיני דברים קטנים כמו שב-j צריך להוסיף (i + j) % 2
ושבבדיקות שלך עשית arr במקום i במקום במקום div...

וכל מיני דברים שכמו שאמרתי אפשר לראות ע"י מעקב שלב אחר שלב ובדיקת ערכים.



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
Madam
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת
הודעות: 27
נשלח בתאריך: 22 January 2007 בשעה 13:33 | IP רשוּם
ציטוט Madam

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;

ניסיתי כך והתשובה עדיין לא נכונה

 



__________________
הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
חזרה לתחילת העמוד הצג את כרטיס החבר של Madam חפש הודעות אחרות של Madam
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 22 January 2007 בשעה 15:57 | IP רשוּם
ציטוט shoshan

שתי שאלות:
  1. למה השינויים האלה ? המצב הרבה יותר גרוע.

  2. לא לימדו אותכם שפונקציה יכולה להחזיר ערך ולא הכל void ?


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
Madam
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 January 2007
משתמש: מנותק/ת
הודעות: 27
נשלח בתאריך: 22 January 2007 בשעה 16:13 | IP רשוּם
ציטוט Madam

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

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

 



__________________
הנה חוכמת חיים שיווקית נפלאה ש"דגתי" מפי מאיר לישנסקי: "אם אתה רוצה ללכוד דג, תחשוב כמו דג ולא כמו דייג"
חזרה לתחילת העמוד הצג את כרטיס החבר של Madam חפש הודעות אחרות של Madam
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 22 January 2007 בשעה 17:44 | IP רשוּם
ציטוט shoshan

עשית עוד שינויים חוץ מהמשתנים.

ויש גם את השטות עם ה-mid שפעם הוא ערך ופעם אינדקס...

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


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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