ABA


"מישהו יכול לעזור לי בבקשה בשאלה פשוטה בסי ??"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6424 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6424
Zoly81

   18:50   27.06.03   
אל הפורום  
  מישהו יכול לעזור לי בבקשה בשאלה פשוטה בסי ??  
 
   נגיד יש לי 100 תלמידים ולכל תלמיד נגיד שיש מספר שונה של ציונים אז אני צריך לקלוט לכל אחד מהם את הציונים ולהקצות זכרון בהתאם ...
אני יודע שזו שאלה פשוטה אבל פשוט אני לא מבין את כל הקטע של ההקצאה איך זה עובד בדיוק ...
תודה לעוזרים ...


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  אף אחד לא יכול לעזור לי בפתרון התרגיל ? Zoly81 27.06.03 20:49 1
  לא ממש הבנתי את השאלה, אולי אתה מתכוון לזה: onet 27.06.03 21:08 2
     לא, לא התכוונתי לזה, התכוונתי לאיך לכתוב את Zoly81 27.06.03 21:18 3
         אז ככה yoash 27.06.03 21:59 4
             בהחלט זה פתרון Quant86 28.06.03 00:14 5
  האמת לזה התכוונתי מה ש-yoash כתב זה הקטע Zoly81 28.06.03 00:28 6
     MALLOC היא פונקציה שהתפקיד שלה למצוא Quant86 28.06.03 00:45 7
         הבנתי תודה ממש גדולה ... Zoly81 28.06.03 11:22 8

       
Zoly81

   20:49   27.06.03   
אל הפורום  
  1. אף אחד לא יכול לעזור לי בפתרון התרגיל ?  
בתגובה להודעה מספר 0
 
  


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

   21:08   27.06.03   
אל הפורום  
  2. לא ממש הבנתי את השאלה, אולי אתה מתכוון לזה:  
בתגובה להודעה מספר 0
 
  
int a(100)

הסוגריים מעוגלות כי זה לא נותן לכתוב סוגריים מרובעות
לזה?
http://planet.nana.co.il/orenk4/onet3.JPG


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

   21:18   27.06.03   
אל הפורום  
  3. לא, לא התכוונתי לזה, התכוונתי לאיך לכתוב את  
בתגובה להודעה מספר 2
 
   התוכנית שכתבתי שמה ...
וזה לא מערך רגיל צריך להשתמש במערך של מצביעים ...
רק שאני לא יודע לעשות את ההקצאה הדינמית בתרגיל הזה ...


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

   21:59   27.06.03   
אל הפורום  
  4. אז ככה  
בתגובה להודעה מספר 3
 
   אני מבין שיש לך ניסיון בC
אז ככה:
להקצאת זיכרון בC יש שתי פונקציות אחת malloc שמקבלת בתור פרמטר את גודל הזיכרון שהיא צריכה להקצות כלומר אתה שולח את כמות התאים כפול גודל של כל תא:

int * a = (int *)malloc(sizeof(int) * Size);

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


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

   00:14   28.06.03   
אל הפורום  
  5. בהחלט זה פתרון  
בתגובה להודעה מספר 4
 
   עבר עריכה לאחרונה בתאריך 28.06.03 בשעה 00:15
 
אני אתן דוגמא נראה לי שמתאימה לך יותר
ד"א כדי להשתמש בפונקציה MALLOC אתה צריך להשתמש בסיפריה ALLOC.H

#include <stdio.h>
int main(void) {

int *a[100]; // מערך מצביעים

for(int i=0;i<100;i++) {
a[i] = new int[100];
for (int j=0;j<100;j++) {
a[i][j] = j;
printf("%d ",a[i][j]);
}
delete a[i];
}

}


שמישהו יותר מנוסה ממני בסי יתקן אותי, אבל אני מאמין שהתוכנית הזאת נכונה....

על זה דיברת לא?


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

   00:28   28.06.03   
אל הפורום  
  6. האמת לזה התכוונתי מה ש-yoash כתב זה הקטע  
בתגובה להודעה מספר 0
 
   בתוכנית שלא היה לי מובן ...
ומה שעדיין לא מובן לי זה שאם לא ידוע לנו מספר הציונים לכל תלמיד אז נשתמש במערך דינמי ואז נשתמש בהקצאה של malloc אבל איך אני קובע את כמות התאים בתוך ההקצאה ולתוך מה נציב את הערך שהmalloc יחזיר וכמה פעמים גם נעשה את הפעולה של ה-malloc האם לכל תלמיד בנפרד ?
תודה לכל מי שעוזר לי ...


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

   00:45   28.06.03   
אל הפורום  
  7. MALLOC היא פונקציה שהתפקיד שלה למצוא  
בתגובה להודעה מספר 6
 
   זכרון רצוף בהתאם לצרכיך, MALLOC מקבלת מספר בתים שיש להקצות, ומוצאת בשבילך בזכרון בלוק רצוף פנוי ומחזירה לך את הכתובת אליו, זה הכל, אז זה עובד ככה,

אתה אומר לפונקציה כמה בתים אתה רוצה והיא מחזירה לך את הכתובת בזכרון, למשל אתה רוצה 100 מספרים שלמים מסוג INT, אז אתה בודק כמה בתים זה INT במערכת שאתה עובד איתה, באמצעות SIZEOF ואז מכפיל את זה במספר התאים שאתה רוצה במערך, במקרה שYOASH נתן זה המשתנה SIZE

עכשיו, כל מה שנותר זה לגרום לפוינטר שלך להצביע למיקום של בלוק הזכרון שנמצא עבורך, ד"א הוא גם נרשם כזכרון בשימוש בגלל זה יש לבצע בסוף FREE כלומר לרשום שהבלוק הזה פנוי למבקש אותו... ההצבה לתוך הפוינטר תתבצע באמצעות המרה, בגלל ש MALLOC תחזיר לך VOIDPTR כלומר VOID*, ואתה מעוניין בINT* במקרה הזה, אז אתה פשוט ממיר אותו....


משהו לא ברור?


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

   11:22   28.06.03   
אל הפורום  
  8. הבנתי תודה ממש גדולה ...  
בתגובה להודעה מספר 7
 
  


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

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

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



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