עבור לתוכן
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

פורסם

שלום לכולם.

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

void firstSort(int mat[][COL])
{
int i,j,k;
for (i=0; i<COL; i++)
for (k=0; k<ROW; k++)
for (j=1; j<ROW; j++)
if (mat[j-1][i] > mat[j][i])
swap(&(mat[j-1][i]), &(mat[j][i]));
}


void swap(int *x, int *y) //x gets the value in y
{
int *temp;
temp=x;
*x=*y;
*y=*temp;
}

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

אם מישהו יכול לעזור לי כאן אני מאוד אודה לו.

יום טוב

פורסם

הבעיה אצלך היא בפונקציה שעושה SWAP

אתה שומר ב TEMP את הכתובת של X, אחרי מכניס לכתובת של X את הערך של Y, ואז אתה מכניסה ל Y את מה שיש ב TEMP, שמצביע לכתובת של X, ששם שמת לפני שניה את הערך שב Y.

מה שבעצם זה עשה בפועל, זה:

x=y

y=x

המשתנה TEMP שלך לא אמור להיות מצביע!

תעשה את זה בצורה הבאה:


int temp;
temp=*x;
*x=*y;
*y=temp;

בהצלחה!

פורסם
  • מחבר

תודה רבה! עזרת לי מאוד

פורסם
  • מחבר

שאלה נוספת. חיפשתי בגוגל וניסיתי גם את החיפוש באתר..

איך אני מגדיר בC מערך של מחרוזות. כאשר מס' המחרוזות מוגדר כקבוע N ואני לא יודע מה הגודל של כל מחרוזת.

???

פורסם

אז זה חייב להיות מערך של מצביעים:

char* arr[N];

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

פורסם
  • מחבר

תודה :xyxthumbs:

משהו כזה בערך?

void main()
{
char *arrOfStr[N];
int i;
for (i=0; i<N; i++)
arrOfStr[i]=(char *)realloc(arrOfStr, strlen(gets(arrOfStr[i])));

}

פורסם

אתה לא יכול לעשות malloc ו-gets באותה שורה, כי כרגע אתה עושה gets לפני ה-malloc, כלומר אתה מנסה לקרוא לתוך מצביע שלא אותחל עדיין.

קודם צריך לקרוא את המחרוזת לאנשהו, להחליט מה האורך שלה, ואז לעשות malloc ולהעתיק לשם את המחרוזת.

חוץ מזה, עוד שני דברים קטנים: האורך של המערך שאתה מקצה עבור מחרוזת צריך להיות strlen+1, כדי שיהיה מקום ל-'0\', ועושים realloc רק כשאתה רוצה להקצות מצביע כלשהו מחדש. בהקצאה הראשונה משתמשים ב-malloc.

ארכיון

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

דיונים חדשים

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.