ABA


"כמה שאלות על מחסנית:"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13786 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13786
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:01   14.12.06   
אל הפורום  
  כמה שאלות על מחסנית:  
 
   ערכתי לאחרונה בתאריך 14.12.06 בשעה 14:01 בברכה, Grass-Boyy
 
מה הפירוש של חץ (<--)
איך מגדירים מבנה מחסנית רגיל?
מה התפקיד של NULL?
אפשר הסבר לשורה הבאה:

(*head)->num = num;


מזה אומר שיש ** ברצף בפרמטר של פונקציה

struct stack**

תודה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הסבר Limp Bizkit 14.12.06 21:03 1
     תודה רבה יישר כוח Grass-Boyy 15.12.06 14:46 2
     כלומר החץ הוא כדי לפנות לערכו שדל המצביע למערך, Grass-Boyy 17.12.06 10:36 3
         הסוגריים המרובעות מתייחסות למקום במערך MULI 17.12.06 17:13 4
             תודה רבה-נראה לי שטעית בין ST לDATA Grass-Boyy 17.12.06 21:22 5
                 חוששני שאתה טעית Limp Bizkit 17.12.06 21:39 6
                     אוקי עד כאן הבנתי, אבל את השורות הבאות לא הבנתי: Grass-Boyy 18.12.06 14:11 7
                         עוד משהו בקשר להגדרת המסחנית Grass-Boyy 18.12.06 14:41 8
                             תשובות לשאלות שלך Limp Bizkit 18.12.06 22:12 9
                                 תודה רבה - אבל קצת הגזמת את זה אני יודע אבל לא הבנתי Grass-Boyy 19.12.06 14:22 10
  מה הstack_info_type מסמל וStack_type מסמל ואיזה מציין סוג איבר במחסנית Grass-Boyy 20.01.07 15:24 11
  יש פה בלבול קטן במה שהסבירו לך אחי עידן_הכלי 20.01.07 15:53 12
     תקרא את מה ששאלתי בבקשה- יש לך איסיקיו? Grass-Boyy 20.01.07 16:39 13
         כנס עידן_הכלי 20.01.07 16:48 14
             לא הבנתי מה ההבדל Grass-Boyy 20.01.07 16:56 15
                 טוב אני יתן לך דוגמה עידן_הכלי 20.01.07 17:06 16
                     בוא נראה אם הבנתי: Grass-Boyy 20.01.07 19:24 17
                         אתה יודע מה עידן_הכלי 20.01.07 20:34 18
                             אז אם הבנתי: Grass-Boyy 21.01.07 14:18 19
                                 ? Grass-Boyy 22.01.07 16:09 20

       
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות, דרג אמינות חבר זה
   21:03   14.12.06   
אל הפורום  
  1. הסבר  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 14.12.06 בשעה 21:07 בברכה, Limp Bizkit
 
כשאתה קובע מצביע למחסנית, אפשר לגשת למחסנית ע"י התייחסות לפוינטר ואז לנתון שבמחסנית

אם הגדרתי לדוגמא Stack *pstack הגדרתי בעצם מצביע למחסנית ואפשר לגשת לנתוני המחסנית ע"י

pstack->count לדוגמא

אותו דבר במבנים אם למדת את זה, בגישה רגילה לנתוני המחסנית משתמשים בנק'
לדוגמא יש לי מבנה בעל השם mivne ויש לי משתנה מסוג i שם
אני ניגש אליו ככה

mivne.i == 5

ואם יש לי מצביע למבנה בעל השם ptr לדוגמא אני ניגש לאותו נתון במבנה בצורה הבאה :

ptr->i == 5

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

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

לגבי השאלה האחרונה, זה מסמל "מצביע של המצביע", אם לא הבנת, מצבך גרוע

בהצלחה בהמשך

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:46   15.12.06   
אל הפורום  
  2. תודה רבה יישר כוח  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 15.12.06 בשעה 14:46 בברכה, Grass-Boyy
 
iii


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   10:36   17.12.06   
אל הפורום  
  3. כלומר החץ הוא כדי לפנות לערכו שדל המצביע למערך,  
בתגובה להודעה מספר 1
 
   עבר עריכה לאחרונה בתאריך 17.12.06 בשעה 17:07 על-ידי Nesher (מנהל הפורום)
 
ובקשר לשורה הנ"ל:


*x = (st->data){st->top};

מה אומר לי הסוגריים המרובעות?, ובכלל כל השורה?
(הוחלפו בסוגריים מסולסלות!!!)


ומה הכוונה של הפונקציהstack_top? מזה אומר בעברית?

תודה רבה אחי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MULI

דרג אמינות חבר זה
   17:13   17.12.06   
אל הפורום  
  4. הסוגריים המרובעות מתייחסות למקום במערך  
בתגובה להודעה מספר 3
 
   שם המערך הוא data, והוא למעשה חלק ממבנה
st מצביע למבנה הזה

אז לוקחים את הערך במקום top במערך data ומעתיקים אותו למשתנה שx מצביע עליו

STACK TOP זה ראש המחסנית, הפונקציה משמשת כדי לדעת מה יש בראש המחסנית מבלי להוציא ממנה את הערך הזה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   21:22   17.12.06   
אל הפורום  
  5. תודה רבה-נראה לי שטעית בין ST לDATA  
בתגובה להודעה מספר 4
 
   הפוך זה נכון
ST זה המבנה
DATA הוא המצביע למבנה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות, דרג אמינות חבר זה
   21:39   17.12.06   
אל הפורום  
  6. חוששני שאתה טעית  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 17.12.06 בשעה 21:43 בברכה, Limp Bizkit
 
st זה המצביע למחסנית ו-data זה שם המערך שנמצא בתוך המחסנית

ו-top זה משתנה שנמצא בתוך המחסנית שמכיל ערך מספרי כלשהו והוא בעצם מהווה את האיבר במחסנית שאליו ניגשים

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:11   18.12.06   
אל הפורום  
  7. אוקי עד כאן הבנתי, אבל את השורות הבאות לא הבנתי:  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 18.12.06 בשעה 14:12 בברכה, Grass-Boyy
 
שורת Typedef וההצהרות של הפונקציות שעושות פעולות על המחסנית

typedef struct stack_type stack_type;

void stack_init(stack_type * st);
int stack_empty(stack_type *st);
void stack_push(stack_type *st, stack_info_type x);
void stack_pop (stack_type *st , stack_info_type *x);
void stack_top (stack_type *st , stack_info_type *x);



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:41   18.12.06   
אל הפורום  
  8. עוד משהו בקשר להגדרת המסחנית  
בתגובה להודעה מספר 7
 
   אם הבנתי נכון לפי הקטע הנ"ל:

#define STACK_MAX_SIZE 5

typedef int stack_info_type ;

struct stack_type
{
int top;
stack_info_type data;
} ;

הtop משמש למספור האיברים במחסנית כל פעם שנדחוף איבר למחסנית הוא יגדל ב-1
והמערך data הוא מסוג שלמים, והוא כל פעם יוסיף לעצמו איבר נוסף בהתאם


אשמח אם תסבירו לי יותר במפורט למה משמש הtop ולמה משמש המערך בדוגמא זו ואיך זה בא לידי ביטוי?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות, דרג אמינות חבר זה
   22:12   18.12.06   
אל הפורום  
  9. תשובות לשאלות שלך  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 18.12.06 בשעה 22:17 בברכה, Limp Bizkit
 
נעבור אחד אחד.

typedef :
בנוסף לטיפוסים הקיימים בשפת c, קיימת גם אפשרות להגדיר טיפוסים חדשים ע"י typedef

לדוגמא :


typedef double doogma(4);

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

doogma arr;
arr(2) = 2.23232323;

בכוונה עשיתי עם סוגריים עגולות כי אי אפשר מרובעות
מקווה שהייתי ברור

במקרה שלך הגדרת טיפוס מחסנית חדש בעל השם stack_type (אני ידון על זה בהמשך)


אב טיפוס הפונקציה :
בקובץ ממשק בדרך כלל מגדירים אב טיפוס לפונקציות של התוכנית
האב טיפוס מציין למהדר איזה ערך הפונקציה מחזירה (האם int,double וכו', או שבכלל void שלא מחזיר שום ערך)
הוא גם מציין את שם הפונקציה, ובתוך הסוגריים הוא אומר למהדר איזה פרמטרים הפונקציה אמורה לקבל ואת מציין הטיפוס שלהם (אתה יכול לציין גם את שמות המשתנים אבל המהדר יכול להחליט להתעלם מהם. *לא לציין שמות משתנים באב טיפוס פוקנציה זו לא שגיאה*)

לצורך המחשה :


int sum(int,int); // function prototype

ציינו למהדר שקיימת פונקציה בשם sum שאמורה לקלוט שתי משתנים מסוג int


במקרה שלך :


void stack_push(stack_type *st, stack_info_type x);

ציינו למהדר שיש פונקציה בשם stack_push שאמורה לקבל מצביע מסוג stack_type (כמו שהסברתי מקודם)
ועל פי השורה הזו שהגדרת

typedef int stack_info_type ;

היא גם מקבלת משתנה מסוג שלם x

האבטיפוס הספציפי הזה שקול גם לזה :


void stack_push(stack_type*, stack_info_type);

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


לשאלה הבאה, אני ממש לא יודע למה המחסנית הזו משמשת, אבל הכל תלוי בהקשר שמשתמשים בה!
אבל ממה שהבנתי ממך,
הtop משמש למספור האיברים במחסנית!
אם top יהיה 5, זאת אומרת שיש 5 איברים במחסנית

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


מקווה שהבנת אותי, בהצלחה בהמשך

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:22   19.12.06   
אל הפורום  
  10. תודה רבה - אבל קצת הגזמת את זה אני יודע אבל לא הבנתי  
בתגובה להודעה מספר 9
 
   את כל הקשר לפוינטרים
ואת השורה של הtypedef למה פעמיים זה חוזר על זה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   15:24   20.01.07   
אל הפורום  
  11. מה הstack_info_type מסמל וStack_type מסמל ואיזה מציין סוג איבר במחסנית  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   15:53   20.01.07   
אל הפורום  
  12. יש פה בלבול קטן במה שהסבירו לך אחי  
בתגובה להודעה מספר 0
 
   * ו -> בעצם מסמלים את אותו הדבר

ברגע ששילבת את שניהם, זה כאילו עשית פעמים *

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

זה כמו שתעשה מערך לדוגמא:
arr בעצם יצרתי מערך דו מימדי של 10 טורים ו10 שורות

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

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

מקווה שהבנת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   16:39   20.01.07   
אל הפורום  
  13. תקרא את מה ששאלתי בבקשה- יש לך איסיקיו?  
בתגובה להודעה מספר 12
 
   אני צריך עזרה בתירגום לשפת C

ומה ההבדל בין stack_info_type לבין stack_type

תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   16:48   20.01.07   
אל הפורום  
  14. כנס  
בתגובה להודעה מספר 13
 
   אין לי איסיקיו, אני גם חייל זה לא יעזור לך אני לא בבית בכלל כל השבוע

אני לא יודע C אני יודע C++ ו C#

ו
stack info type זה בעצם הסוג של הנתונים שישמרו בתוך המחסנית.

לדוגמא יכול להיות לי מחסנית שתכיל integerים, יכול להיות stringים ויכול להיות שזה יכיל בכלל טיפוס שאתה יצרת, כמו מחלקה או משהו כזה.

ה stack type זה הגדרת סוג המחסנית כדי שכשתרצה ליצור מופע מסויים תדע לאיזה שם ליצור אותו.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   16:56   20.01.07   
אל הפורום  
  15. לא הבנתי מה ההבדל  
בתגובה להודעה מספר 14
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   17:06   20.01.07   
אל הפורום  
  16. טוב אני יתן לך דוגמה  
בתגובה להודעה מספר 15
 
  

typedef int stack_info_type זה בעצם אומר שסוג הנתונים במחסנית יהיה integer

stack stack_type { stack_info_type data};
זה בעצם מגדיר מחסנית בשם stack_type
שהנתונים שהיא תכיל הם הסוג שהגדרת השורה הראשונה,
במקרה זה יהיה int

ועכשיו כדי לזמן את הכל לתוך פונצקיה
צריך ליצור מופע למחסנית
stack_type Idan;
ואז
func_name(Idan);
לדוגמא...

יותר מפורט מזה אין


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   19:24   20.01.07   
אל הפורום  
  17. בוא נראה אם הבנתי:  
בתגובה להודעה מספר 16
 
   stack_info_type - מגדיר את הנתונים שהמחסנית תכיל
כלומר מחסנית בשונה מרשומה לא יכולה להכיל משתנים מסוג שונה


stack_type - ידגיר את טיפוס המחסנית מבחינה כלללית?
לאא הכי הבנתי אאת זה

תודהה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   20:34   20.01.07   
אל הפורום  
  18. אתה יודע מה  
בתגובה להודעה מספר 17
 
   תמחוק את המושג stack_type זה לא קיים, זה סתם שם שאתה קובע ל stack.

אתה לא יכול להגדיר ככה:
stack newstack.

זה לא קיים, אתה חייב לעשות
stack blabla{blablabla}
ואז
blabla newstack.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   14:18   21.01.07   
אל הפורום  
  19. אז אם הבנתי:  
בתגובה להודעה מספר 18
 
   ערכתי לאחרונה בתאריך 21.01.07 בשעה 14:25 בברכה, Grass-Boyy
 
stack_info_type - מגדיר את המשתנים הכללים של המחסנית
stack_type - מגדיר מחסנית חדשה

להגדרת מחסנית בשם S1
נרשום:
stack_type=s1;
ולהגדרת המתשנים כשלמים
int stack_info_type;


הבנתי?



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   16:09   22.01.07   
אל הפורום  
  20. ?  
בתגובה להודעה מספר 19
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net