עבור לתוכן

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

Featured Replies

פורסם

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

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

פורסם

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

בקצרה

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

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

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

פורסם
  • מחבר

זה מה שניסיתי לעשות לפני אבל משום מה המהדר סימן לי שגיאה....בין הFOR להמשך אני ינסה שוב ותודה על העזרה.......

פורסם

אם זה צריך להיות 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

פורסם
  • מחבר

נכון מה שאמרת אבל חלקן נמצאות בSTDLIB.H בכל אופן יש לי TCLITE

פורסם
  • מחבר

יש לי בעיה עוד(זה התוכנית הראשונה שאני כותב ב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;

}

}

פורסם

אל תשתמש בכלל ב-goto, זה התכנות הכי גרוע שיכול להיות

פורסם
  • מחבר

אל תשתמש בכלל ב-goto, זה התכנות הכי גרוע שיכול להיות

i know that but i cant do nothing

מה אתה מציע לעשות ואיפה הטעויות שלי............

ארכיון

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

דיונים חדשים