שאלה : פרמטר של מערך דו מימדי -cpp

amirjak

New member
שאלה : פרמטר של מערך דו מימדי -cpp

כיצד אני קולט לפונקציה מערך דו מימדי? ניסיתי כך
int func(bool board[8][8]) { .. }​
ולא הצלחתי לקלוט אליו משתנים כך
int a = func = ({ {0,0,0,0,0,1,0,0}, {1,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0} });​
ניסיתי גם כך
int func(bool *board) //וגם כך int func(bool **board)​
וכשבאתי להכניס את הפרמטר התרחשה תמיד שגיאה. כיצד קולטים לפונקציה פרמטר דו מימדי. נושא שלכאורה נראה פשוט והסתבך לי מאד.. תודה לעוזרים.
 

amirjak

New member
שגיאה קטנה

תיקון
int a func({ {0,0,0,0,0,1,0,0}, {1,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,1,0,0} });​
 

vinney

Well-known member
איזה דבר מכוער... בחיים לא ראיתי

כזה גועל נפש
סליחה, בלי להעליב
אם המערך כולו ידוע לך בזמן קומפילציה, למה אתה לא משתמש במשתנה שמאותחל מראש לערכים האלה ומעביר אותו? בנוסף, למה לך להעביר מערך שלם BYVAL? מה התועלת בזה? מערכים מעבירים בד"כ במצביעים או BYREF.
 

vinney

Well-known member
לבעיה עצמה....

לא ניסיתי, אבל על פניו הגדרת מערך של bool ואתה מעביר מערך של int. יכול להיות שזה מקור הבעיה שלך? מה הודעת השגיאה שאתה מקבל?
 

amirjak

New member
כבר פתרתי את הבעיה

ניסיתי לקלוט מערך דו מימדי לפונקציה
int func(bool **board)​
הטעות הייתה שחשבתי שאני יכול להכניס לפונקציה מערך דו מימדי שאני מגדיר בצורה רגילה ולא באמצעות מחוונים תוך שימוש בהקצאה דינמית (כמו שעושים במערך חד מימדי) כלומר ככה
bool board[8][8]; func(board);​
אבל כנראה שאי אפשר לעשות את זה במערך דו מימדי והלאה וצריך להשתמש בהקצאה דינמית, כלומר לכתוב ככה..
bool **board = new bool*[8]; for (register int i = 0; i<8;i++) board = new bool[8]; int ans = func(board);​
 
למעלה