עזרה במערך דו מימדי בC - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה במערך דו מימדי בC


THE-MASTER

Recommended Posts

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

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

קישור לתוכן
שתף באתרים אחרים

הדבר היחיד שאתה יכול לעשות זה מארך של מצביעים בגודל N שכל אחד מהם מצביע למארך בגודל M

בקצרה

int **p = (int**)malloc(n*sizeof(int*));

for(int i=0;i<n;i++) p = (int*)malloc(m*sizeof(int));

אני בטוח שתסתדר מפה

קישור לתוכן
שתף באתרים אחרים

אם זה צריך להיות ansi-c אז הבעיה היא שהגדרתי משתנה בתוך הלולאה, מה שאסור ב-ansi-c

תגדיר את i בחוץ כך

int i;

int **p = (int**)malloc(n*sizeof(int*));

for(i=0;i<n;i++) p = (int*)malloc(m*sizeof(int));

קישור לתוכן
שתף באתרים אחרים

holy זאת חלק מהתוכנית שלי אז תראה מה לא בסדר בה.

#include <stdio.h>

#include <alloc.h>

void main()

{

int i,total;

int **line;

printf("please insert the length of the square");

scanf("%d",&total);

line=(int**)malloc(total*sizeof(int*));

for (i=0,i<total,i++)

line=(int*)malloc(total*sizeof(int);

}

קישור לתוכן
שתף באתרים אחרים

השגיאות שלך הן שגיאות שכל קומפיילר אפילו העלוב ביותר יגיד לך בדיוק מה הבעיה

ב-for השתמשת בפסיק במקום בנקודה פסיק להפריד בין שלושת האיברים

בשורה האחרונה חסר לך סוגר לפתוח של ה-malloc

דרך אגב - משתמשים ב-stdlib.h ולא ב-alloc.h.

קישור לתוכן
שתף באתרים אחרים

השגיאות שלך הן שגיאות שכל קומפיילר אפילו העלוב ביותר יגיד לך בדיוק מה הבעיה

ב-for השתמשת בפסיק במקום בנקודה פסיק להפריד בין שלושת האיברים

בשורה האחרונה חסר לך סוגר לפתוח של ה-malloc

דרך אגב - משתמשים ב-stdlib.h ולא ב-alloc.h.

אווווווווו התבלבתי לא שמתי לבב אווווווווווווף הסוגריים של הMALLOC בסוף נפל משום מה אבל זה היה.

והולי בוא נלמד אותך משהו(אני לא מאמין שאני אומר את זה).....

alloc----dynamic memory allocation שזה אומר שזה משמש להקצאות דינמיות ולא כמו שאתה אומר stdlib

תודה על העזרה הולי אתה מצויין.

קישור לתוכן
שתף באתרים אחרים

אני יודע טוב טוב מה זה malloc

ב-ansi-c לא קיימת ספריה alloc.h, קיימת ספריה sdtlib.h בה יש את כל הפונקציות של הזיכרון (malloc/calloc/free ועוד כל מיני)

נסה קומפיילר אחר ותראה שוא מוציא לך שגיאה ש-alloc.h לא קיים (לפחות לפי מיטב ידעתי)

קישור לתוכן
שתף באתרים אחרים

אני יודע טוב טוב מה זה malloc

ב-ansi-c לא קיימת ספריה alloc.h, קיימת ספריה sdtlib.h בה יש את כל הפונקציות של הזיכרון (malloc/calloc/free ועוד כל מיני)

נסה קומפיילר אחר ותראה שוא מוציא לך שגיאה ש-alloc.h לא קיים (לפחות לפי מיטב ידעתי)

איך חשדתי בך...ואני מכיר את הספרייה STDLIB יש בה פונקציות לטיפול במחרוזות.......וכל הפונקציות שאמרת לפחות אצלי מופיעים בALLOC.H ואני מכיר אותם זה כולם להקצות ולשחרר זכרון(FREE)

קישור לתוכן
שתף באתרים אחרים

טיפול במחרוזות יש ב-string.h

איזה קומפיילר יש לך?

עריכה - אלה הפונקציות שיש ב-stdlib.h

http://www.cplusplus.com/ref/cstdlib/

וכאן יש לך את כל הספריות הראשיות ב-C (יש עוד כמה קטנות)

http://www.cplusplus.com/ref/indexr.html

קישור לתוכן
שתף באתרים אחרים

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

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

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

#include <stdio.h>

#include <alloc.h>

#include <stdlib.h>

void main()

{

int i,total,j,x,c;

int **line,*cheak;

randomize();

printf("please insert the length of the square");

scanf("%d",&total);

line=(int**)malloc(total*sizeof(int*));

for (i=0;i<total;i++)

line=(int*)malloc(total*sizeof(int));

cheak=(int*)calloc(total*total,sizeof(int));

for(i=0;i<total;i++)

for(j=0;j<total;j++)

{

error:

x=random(total*total+1);

  for(c=0;c<(i*total+j);c++)

  if (cheak[c]=x)

  goto error;

line[j]=x;

cheak(i*total+j)=x;

}

}

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...