הגעת למגבלת הצפייה למשתמשים שאינם רשומים באתר
  • נשמח אם תצטרפו לקהילה שלנו. הרשמה לאתר תקנה לכם את האפשרות לשאול שאלות ולהגיב לשרשורים באתר ללא כל עלות
  • טופס ההרשמה לאתר נמצא כאן למטה ולוקח פחות מ-30 שניות למלא אותו (כן, בדקנו עם סטופר 🤓)

יש פה אנשים שיודעים C?

  • פותח/ת השרשור vithano
  • פורסם בתאריך

vithano

משתמש משקיע
3,369
1,193
משתמש/ת כבוד
נק' מוניטין:
4,263
3,369
1,193
אני מתקשה להבין איך אמורה להראות התוכנית הבאה,תודה למי שיכול לעזור.
b08JKZh.jpg
.
 
בכללי את צריכה לרוץ על המטריצה ואז לעשות את הבדיקה הבאה.

if (matrix[ii][jj]==(i+j))z

ה Z זה רק לישור

השתמשתי באינדקסים של ii ו jj בגלל ההצגה שלהם בפורם.
בתוך ה IF את מוסיפה את האיבר לרשימה שהוא מהצורה של STRUCT וגם מוסיפה אותו למערך, המערך הוא דינאמי ולכן כל פעם צריכה להגדיל אותו.

בכללי מה שהייתי עושה זה מוסיף לרשימה, ובסוף בודק גודל רשימה מקצה מערך בגודל הנתון ורץ על הרשימה ומוסיף את האיברים למערך

 
  • פותח/ת השרשור
  • #3
יש מצב אתה כותב לי את השלד?(איך אמורות הפונקציות להראות,בלי לכתוב את התוכן עצמו).
לא יודע למה הסקת שאני בחורה,אני גבר חח
 
בכללי את צריכה לרוץ על המטריצה ואז לעשות את הבדיקה הבאה.

if (matrix[ii][jj]==(i+j))z

ה Z זה רק לישור

השתמשתי באינדקסים של ii ו jj בגלל ההצגה שלהם בפורם.
בתוך ה IF את מוסיפה את האיבר לרשימה שהוא מהצורה של STRUCT וגם מוסיפה אותו למערך, המערך הוא דינאמי ולכן כל פעם צריכה להגדיל אותו.

בכללי מה שהייתי עושה זה מוסיף לרשימה, ובסוף בודק גודל רשימה מקצה מערך בגודל הנתון ורץ על הרשימה ומוסיף את האיברים למערך


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

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

חייב לציין שזו שאלה מוזרה.

זה מה שרשמתי בסוף, אבל אולי פשוט מצפים מהם להשתמש בזה בגלל לימוד.
לא יכלתי להוסיף פה בגלל שהכל מתחרבש אז הוספתי תמונה, תשים לב שאני מזמן לא רשמתי ב C, ולכן יכול להיות שקצת הסינטקס שלי יהיה לא נכון
sol.PNG
 
i think it should be:

typedef struct Data{
int col;
int row;
int value;
} Data;

typedef struct Node{
Data* data;
Node* next;
} Node;
 
  • פותח/ת השרשור
  • #8
תודה על העזרה,אני מתקשה להעביר מהרשימה המקושרת למערך.
 
תבנה פונקציה שמקבלת כקלט ראש של רשימה ומחזירה את האורך שלה ( למרות שאפילו זה לא נחוץ, אפשר לתחזק קאונטר בזמן הבנייה של הרשימה).
לאחר מכן תעשה malloc מגודל length*sizeof (data)
את הdata מהרשימה תצטרך להעתיק למערך שדה שדה, אי אפשר לעשות שם השמתודה פוינטרים כי מערך צריך להיות רציף בזיכרון.
 
  • פותח/ת השרשור
  • #10
העניין הוא שזה צריך להיות מערך של שלשות(struct של 3 אינטים),את הקאונטר כבר קיבלתי בזמן בניית הרשימה.
השאלה אם אני לא יכול לעשות משהו בסגנון של
קוד:
arr[i]=list->node
 
  • פותח/ת השרשור
  • #12
איך אני עושה את זה אחד אחד אם זה רצף של שלוש אינטים?
פשוט
קוד:
arr[i++]=list->node.a
arr[i++]=list->node.b
arr[i++]=list->node.c
?
 
כן פחות או יותר, תנסה דברים בסגנון עד שזה יתקמפל. ואל תשכח לקדם את הnode
עריכה - אתה צריך לגשת גם לשדות הספציפים של הarr ( עם נקודה ) כמו שעשית בlist
 
נערך לאחרונה:
איך אני עושה את זה אחד אחד אם זה רצף של שלוש אינטים?
פשוט
קוד:
arr[i++]=list->node.a
arr[i++]=list->node.b
arr[i++]=list->node.c
?
arr.a=curNode->a;zzz

ב C אתה רץ על ה NODES של הרשימה, אין לך אפשרות לגשת לעיבר ספצפי כמו שאפשר לעשות ב PYTHON או JAVA בC# וכו'
ולכן תרוץ על curNode
וכל פעם תעשה
curNode=corNode->next ואתה מסיים כאשר הוא שווה NULL
 
  • פותח/ת השרשור
  • #16
אוקיי סידרתי את זה,הטעות שלי הייתה שלא השתמשתי בפרינט בd% כמספר המשתנים,ואז בעצם הדפסתי רק את הראשון והשאר ג'יבריש.
תודה רבה לכל העוזרים 😃
 
שימו לב! השרשור ישן: לא היו תגובות בשרשור מעל 90 יום.

ייתכן שהתוכן בשרשור כבר אינו רלוונטי ולכן עדיף לפתוח שרשור חדש.
Back
למעלה תחתית