כותב |
|
flylight משתמש מתחיל
הצטרף / הצטרפה: 07 August 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 08 August 2010 בשעה 10:38 | | IP רשוּם
|
|
|
|
מצטער שאני משגע אותכם כל פעם עם הבעיות שיש לי תקשיבו כתבתי את התוכנית הבאה:
ציטוט:
int [,] mat=new int [3,3]; int[,] mat2 = new int[3, 3]; Random rnd = new Random(); int i, j, mone; mone = 0; for (i = 0; i<=mat.Length; i++) for (j = 0; j<= mat.Length; j++) { mat[i, j] = rnd.Next(2); } for (i = 0; i < mat2.Length; i++) for (j = 0; j < mat2.Length; j++) { mat2[i, j] = rnd.Next(100); } for (i=0;i<mat.Length;i++) for (j = 0; j < mat.Length; j++) { if (mat[i, j] == mat2[i, j]) mone++; else continue; } if (mone == 9) Console.WriteLine("yes");
|
|
|
בעיקרון זה אמור לבדוק אם שתי מטריצות חופפות אבל כשאני מריץ את זה הוא מסמן את את השורה:
ורושם לי "האינדקס נמצא מחוץ לגבולות המערך" (כשאני מסמן את j הוא מראה לי שהערך בפנים הוא 3 איך זה הגיוני i ו j צריכים שניהם להיות שווים 0 לא?) מה הבעיה כאן ואיך אני מסדר את זה? דרך אגב התוכנית בסדר יש בה שגיאות בבקשה תעזרו לי
|
חזרה לתחילת העמוד |
|
|
אוריה משתמש חבר
הצטרף / הצטרפה: 29 January 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 230
|
נשלח בתאריך: 08 August 2010 בשעה 16:17 | | IP רשוּם
|
|
|
|
index out of range קורה מתי שהאינדקס גדול או קטן מגבולות המערך. לדוגמא: אם יש מערך בגודל 5, אינדקס 1- יצא מגבולות המערך, וגם האינדקס 5 יצא בגלל שבמערך יש 5 מקומות שמתחילים מ-0: 4 3 2 1 0 | | | | | | לכן כשאתה פונה לאינדקס mat.Length תקבל שגיאה (תמיד יש פחות מקום אחד, כי המערך מתחיל מ-0)
__________________ SmartProgramming
נא לא להגיב בשבת על מה שאני כותב
עדיף להשקיע עוד שעה בתיעוד, מלאבד עוד 100 שעות ויותר על שיחזר של כל הפרוייקט מההתחלה..
|
חזרה לתחילת העמוד |
|
|
flylight משתמש מתחיל
הצטרף / הצטרפה: 07 August 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 08 August 2010 בשעה 17:07 | | IP רשוּם
|
|
|
|
לא הבנתי אז מה אני אמור לעשות לא לכתוב .legth ?
מה לכתוב ידנית כאילו את הגודל של המערך
ולמה האינדקס גדול מגבולות המערך?
|
חזרה לתחילת העמוד |
|
|
אוריה משתמש חבר
הצטרף / הצטרפה: 29 January 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 230
|
נשלח בתאריך: 08 August 2010 בשעה 17:11 | | IP רשוּם
|
|
|
|
length - 1
__________________ SmartProgramming
נא לא להגיב בשבת על מה שאני כותב
עדיף להשקיע עוד שעה בתיעוד, מלאבד עוד 100 שעות ויותר על שיחזר של כל הפרוייקט מההתחלה..
|
חזרה לתחילת העמוד |
|
|
flylight משתמש מתחיל
הצטרף / הצטרפה: 07 August 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 08 August 2010 בשעה 20:53 | | IP רשוּם
|
|
|
|
אחי אתה יכול להסביר בפירוט אני רוצה להבין לא רק לכתוב סתם קוד
חוצמזה שניסיתי אבל הוא עדיין רושם לי האינדקס נמצא מחוץ לגבולות המערך בשורה
mat2[i, j] = rnd.Next(100);
דרך אגב תודה מראש על העזרה (שהייתה ושתהיה אני מקווה)
|
חזרה לתחילת העמוד |
|
|
inHaze משתמש פעיל
הצטרף / הצטרפה: 23 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 119
|
נשלח בתאריך: 09 August 2010 בשעה 09:52 | | IP רשוּם
|
|
|
|
כשאתה מגדיר מערך של 3 על 3. האינדקסים של המערך בכל מימד רצים בין 0 ל- 2:
קוד:
mat[3,3] = [0, 1, 2] [0,1,2] |
|
|
כאשר שימוש ב- mat.Length במקרה זה (מערך דו- מימדי) שווה ל-
קוד:
mat[3,3].Length = 3 * 3 = 9 |
|
|
לכן אתה צריך במקרה שלך להשתמש בלולאות ב- math.Length/3.
דבר נוסף בשתי הלולאות הראשונות הוספת סימן = מיותר:
קוד:
for (i = 0; i<=mat.Length; i++) for (j = 0; j<= mat.Length; j++) |
|
|
זה יגרום לחריגה מגבולות המערך.
__________________ הבלוג שלי
|
חזרה לתחילת העמוד |
|
|
flylight משתמש מתחיל
הצטרף / הצטרפה: 07 August 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 10 August 2010 בשעה 12:37 | | IP רשוּם
|
|
|
|
תודה אחי הבנתי עכשיו הצלחתי
|
חזרה לתחילת העמוד |
|
|
לבן כהה משתמש מתחיל
הצטרף / הצטרפה: 11 June 2010
משתמש: מנותק/ת הודעות: 44
|
נשלח בתאריך: 12 August 2010 בשעה 12:36 | | IP רשוּם
|
|
|
|
הערה קטנה-
במערך דו ממדי, אפשר לדעת את מספר השורות ע"י
אני לא זוכר, אולי זה ככה-
ועמודות, זה עם 1 במקום 0...
מה שבטוח, זה יותר טוב מ Lenght/3, בעיקר אם מספר השורות לא שווה למספר העמודות..
__________________ אתר מעולה עם מדריכים בעברית!
|
חזרה לתחילת העמוד |
|
|
אוריה משתמש חבר
הצטרף / הצטרפה: 29 January 2010 מדינה: Israel
משתמש: מנותק/ת הודעות: 230
|
נשלח בתאריך: 12 August 2010 בשעה 14:09 | | IP רשוּם
|
|
|
|
כן, יש פונקציה GetLenght Length נותן את הכפולה של מספר האברים בשני הממדים
__________________ SmartProgramming
נא לא להגיב בשבת על מה שאני כותב
עדיף להשקיע עוד שעה בתיעוד, מלאבד עוד 100 שעות ויותר על שיחזר של כל הפרוייקט מההתחלה..
|
חזרה לתחילת העמוד |
|
|