עבור לתוכן

בעיית syntax לא מובנת ב c

Featured Replies

פורסם


a.array[0][0]={2,0,7
0,0,0
6,0,0}

ההודעה שאני מקבל

error C2059: syntax error : '{'

בשורה הראשונה..

a זה מערך דו ממדי של מערכים דו ממדיים

פורסם

אםזה מערך דו מימדי של מערכים דו מימדים אז אתה אמור לגשת לאיבר מסוים בו כ

(A[x][y])[0][0] = ....

עד כמה שאני הבנתי אותך

פורסם

אני מניח ש-a.array הוא מערך תלת מימדי שהצהרת עליו במקום אחר.

אז אי אפשר לשים ערכים במערך בצורה כזו אחרי שמצהירים עליו, אתה חייב לשים אותם איבר-איבר.

פורסם

a[0][0].array[0][0]=val00;

a[0][0].array[0][1]=val01;

.

:

פורסם
  • מחבר

אני יודע שאפשר לשים כל אחד בנפרד אבל זה סתם המון לכתוב, וזה הורס לי את כל המבניות שבתוכנית.

שאני פונה ככה


a.array[0][1]=

אני בעצם פונה למערך דו ממני בגודל 3 על 3

וזה בעצם מה שאני נותן לו מערך בגודל 3 על 3..

אין דרך אחרת?

פורסם

אם אתה כותב ב ANCI C אז לא שזכור לי... אם מדובר ב C++ אתה יכול לשכתב את אופרטוק ההשמה שיתמוך בזה :)

פורסם

A הוא מערך דו מימדי או לא?

פורסם

עם ה- syntax שאתה מנסה להשתמש בו אפשר רק לאתחל מערך/משתנה.

למשל -

int array[2][3] = { 1, 2, 3, 4, 5, 6 };

עובד.

אבל אתה לא יכול לעשות השמה כזו:

array = { 2,3 4, 5, 6, 7};

פורסם

באתחול אתה יכול לעשות גם ככה: { {1, 2, 3}, {4, 5, 6} }.

פורסם
  • מחבר

תודה לכולם, הסתדרתי אבל יש לי עוד שאלה.

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

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


void print_math3(bigarray a,int x,int y)
{
int i=0;
int j=0;

for(i;i<3;i++)
{
printf("\n");

for(j;j<3;j++)
{
printf(" %d ",a.array[x][y].array[i][j]);
}
}

}

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

פורסם

איך הגדרת את A?(מה רשמת ב typedef?)

יכול להיות שאתה מדפיס בעצם את הPOINTER ולא את הערך שלו.

פורסם
  • מחבר

אין לי בחלק הזה שימוש בפוינטרים.. כי אין צורך..


typedef struct matrix3x3
{
int array[3][3];
} math3;

typedef struct sod_board
{
math3 array[3][3];
}bigarray;

פורסם

המ

אתה בטוח ש-x ו-y הם בגבולות המערך (בין 0 ל-2)?

וחוץ מזה, יותר פשוט היה להגדיר:


typedef int math3[3][3];
typedef math3 bigarray[3][3];

(אין צורך להגדיר struct עבור סוג אחד בלבד)

פורסם

או פשוט typedef int arr[3][3][3][3];???

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים