שגיאות בפונקציה

lillitush

New member
שגיאות בפונקציה

כתבתי פונקציה רקורסיבית האמורה לגלות את המסלול הקצר ביותר של מספרי 1 במטריצה,והיא נראית כך:
void mark_matrix (int matr[rows][col], int ro,int colo,int max_ro,int max_colo) { if ((ro==max_ro)&&(col==max_colo)) { matr[ro][colo]=2; } if (matr[ro][colo+1]==1) { if ((colo+1)<=max_colo) { colo+=1; mark_matrix(int matr[rows][col],int ro,int colo,int max_ro,int max_colo); } } if (matr[ro][colo-1]==1) { if ((colo-1)>=0) { colo=colo-1; mark_matrix(int matr[rows][col],int ro,int colo,int max_ro,int max_colo); } } if (matr[ro+1][colo]==1) { if ((ro+1)<=max_ro) { ro=ro+1; mark_matrix(int matr[rows][col],int ro,int colo,int max_ro,int max_colo); } } if (matr[ro-1][colo]==1) { if ((ro-1)>=0) { ro=ro-1; mark_matrix(int matr[rows][col],int ro,int colo,int max_ro,int max_colo); } } }​
וחוזרות לי כל הזמן השגיאות הבאות: error C2144: syntax error : missing ')' before type 'int' ו- error C2660: 'mark_matrix' : function does not take 0 parameters לגבי כל if שרשמתי.מישהו נתקל בזה פעם?
 

Zack DA

New member
הקשיבי לקומפיילר,

הוא מסביר לך שלא סגרת סוגריים כמו שצריך באחד מה- if-ים, ורואים את זה די בבירור.
 

lillitush

New member
מנסה אבל לא מצליחה

הבנתי את המשמעויות מה-msdn אבל אני בוהה במסך כבר שעה ולא מגלה אותם. גם את הבעיה ב-error השני אני לא מצליחה לגלות...
 

Zack DA

New member
בעיות סינטקס,

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

lillitush

New member
שוב אני פונה...

אני מצטערת אבל אני לא מצליחה לאתר את הבעיה,אולי בכל זאת קצת עזרה?
 

gmorphus

New member
נו באמת, הנה...

בשורה הזאת:
if ((colo+1)<=max_colo)​
קשה לספור סוגריים? יש לך, חוץ מזה עוד בעיה בקוד. תקראי מה הקומפיילר אומר ועל איזו שורה הוא מצביע ותחשבי אם ככה קוראים לפונקציה...
 

lillitush

New member
זאת לא הייתה הבעיה..

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