עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

c - איך שולחים מערך דו ממדי לפונקציה?

Featured Replies

פורסם

איך שולחים את המערך הדו-ממדי 'mat' לפונקציה checkMat?

(כמו שזה עכשיו זה לא פועל)

#include<stdio.h>
int checkMat(int **mat, int rows);


void main(){
int mat[][3]= {{1,2,3},{1,3,4},{4,2,1}};
printf("%d", checkMat(mat, 3));
}


int checkMat(int **mat, int rows){


int i, first=0 , second=0;


for(i=0; i<rows; i++){
first= first+mat[i][i];
second= second+ mat[rows-1-i][i];
}
if(first==second)return 1;
return 0;
}

פורסם

אתה צריך להעביר אותו כמו שאתה מגדיר אותו, דהיינו:

int checkMat(int mat[][3], int rows);

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

צריך לזכור ש-**int זה לא "מערך דו מימדי" - זה סה"כ מצביע למצביע. אפשר להשתמש בזה על מנת לבנות מערך דו מימדי בגודל שאינו ידוע מראש (באמצעות malloc כמובן). יש למעשה שתי דרכים לעשות את זה:

1. להקצות מערך של מצביעים, ואז לכל מצביע להקצות מערך, דהיינו:

int **p = (int**)malloc(sizeof(int*) * rows);
for (i = 0 ; i < rows ; i++) {
p[i] = (int*)malloc(sizeof(int) * cols];
}

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

2. לדמות מערך דו מימדי באמצעות מערך חד מימדי. על מנת ליצור מערך עם m שורות ו-n עמודות יוצרים מערך חד מימדי בגודל m*n ואז בשביל לגשת לתא i,j ניגשים לאינדקס i*n+j. היתרון של השיטה הזו הוא שככה המערך יושב בבלוק רציף בזכרון, ואתה מקצה ומשחרר את כולו במכה אחת.

פורסם
  • מחבר

אוקי,

אבל זו לא הייתה השאלה.

נתונה לי הפונקציה שרשמתי, ואליה אני צריכה לשלוח את את המטריצה (שגם אותה רשמתי ;) ).

מה אני צריכה להוסיף לmain כדי שאוכל לשלוח את המטריצה לפונקציה?

פורסם

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

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.