לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #3  
ישן 04-04-2008, 01:38
צלמית המשתמש של 1moshiko1
  1moshiko1 1moshiko1 אינו מחובר  
 
חבר מתאריך: 23.02.06
הודעות: 30
בתגובה להודעה מספר 2 שנכתבה על ידי Dark Knight שמתחילה ב "[QUOTE=1moshiko1][left] int..."

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

int* students =newint[1];//סטודנט ראשון
grades * numStudents=new grades[1];//מחלקה דינמית של ציונים
*students[0]=numEmployees;//להכניס לתא הראשון את הכתובת של האובייקט הראשון
//פה הטעות שלי איפשהו
אני אמור לבנות שתי מערכים (אחת לאובייקטים ואחת לכתובות) או מערך אחד דמספיק?

תודה רבה, מושיקו
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 04-04-2008, 10:01
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 3 שנכתבה על ידי 1moshiko1 שמתחילה ב "הצלחתי לעלות על הרעיון אחרי..."

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

משתמע מכך, שמערך של מצביעים זה למעשה 2 רמות עקיפות:
זה מצביע לתא בזיכרון שהוא התא הראשון של מערך מצביעים => סה"כ 2 רמות עקיפות.
לכן כדי להגדיר מערך דינאמי אתה צריך:

קוד:
grades** numStudents = new grades[1];


שים לב - 2 כוכביות בשביל 2 רמות עקיפות.

אגב, מותר לכם להשתמש ב-STL? אם כן, במקום לשחק עם הגדלה\הקטנה של מערכים תשתמש בפשוט ב-Vector...
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 04-04-2008, 18:28
צלמית המשתמש של 1moshiko1
  1moshiko1 1moshiko1 אינו מחובר  
 
חבר מתאריך: 23.02.06
הודעות: 30
בתגובה להודעה מספר 4 שנכתבה על ידי Dark Knight שמתחילה ב "אני חושב שכדאי לך לחזור קצת..."

במקום להשתמש בזה:


ציטוט:
במקור נכתב על ידי Dark Knight

קוד:
grades** numStudents = new grades[1];



השתמשתי ב-
קוד:
grades** numStudents = new grades * [1];

מה ההבדלים בין מה שרשמנו?

עבד לי בינתיים בסדר. אם הבנתי נכון, אז
numStudent
הוא מצביע על מערך בגודל 1 שהוא בעצם מצביע על מחלקה
grades.
הגדרתי את ה-
numStudents
כמו שכתבתי. משם והלאה:
קוד:
numStudents[i]=new grade; . . . func(numStudents); . . . void func(grades ** stu)
} grade ** stuTemp=new grade * [2]; int i=0; for(;i<2;i++) *stuTemp[i]=*stu[i]; stuTemp[i]=new grade; . . . {

הגדרתי את המערך ואתחלתי את התא הראשון שלו במחלקה
grade
בפונקציה הגדרתי מערך גדול ב1, העברתי אליו את הכתובות שהיו במערך הראשון ופה הגעתי לבעייה חדשה:
אני רוצה להעביר ל
numStudent
שנמצא ב-
main
את הכתובת החדשה של
stuTemp
איך אני עושה את זה?

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:55

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר