ABA


"שאלה בהבנת הנקרא בC (מבנים)"
גירסת הדפסה        
קבוצות דיון לימודים, מדע ותרבות נושא #21263 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21263
eli-15 לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 25.9.03
19179 הודעות, 1 פידבק
   19:17   12.06.15   
אל הפורום  
  שאלה בהבנת הנקרא בC (מבנים)  
 
יש את הסטראקט


typedef struct Product
{
..
char* name
int code;
int amount
}product

וזאת השאלה


כתוב את הפונקציה void insertProduct(product** items,int size)
הפונקציה מקבלת מצביע למערך מצביעים למוצרים ואת גודל המערך ומוסיפה מוצר חדש למערך. על הפונקציה לקלוט תחילה את קוד המוצר. אם קוד כזה כבר קיים, הפונקציה קולטת כמות ומעדכנת במקום המתאים את כמות המוצרים מאותו הקוד. אם הקוד לא קיים, הפונקציה מגדילה את מערך המצביעים באחד ומוסיפה איבר חדש בסופו של המערך.

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

www.facebook.com/tnagarut

תעשיות נגרות
עיצוב וייצור ריהוט בהזמנה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  הניסוח המילולי לא הכי מוצלח ביחס לחתימת הפונקציה ShocKi  12.06.15 19:36 1
     דבר ראשון תודה על התגובה המהירה eli-15 12.06.15 20:05 2

       
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   19:36   12.06.15   
אל הפורום  
  1. הניסוח המילולי לא הכי מוצלח ביחס לחתימת הפונקציה  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 12.06.15 בשעה 19:41 בברכה, ShocKi
 
מה שהם רוצים שתעשה זה:
אם הקוד קיים לעדכן מלאי. אם לא קיים אז לבדוק שמערך המצביעים יכול לקבל קוד נוסף ואם כן אז להוסיף אותו.

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

2. אם זה מערך דינאמי אז לבדוק שמערך המצביעים יכול לקבל קוד נוסף, אם לא יכול אז להגדיל את מערך המצביעים ע"י realloc. אם זה הצליח אז להקצות מבנה חדש עבור ה KEY שקלטת ולהוסיף את הפוינטר הזה למערך המצביעים.
שים לב שיש 2 אפשרויות להחזיר שגיאה:
1. אם איאפשר להקצות מקום למערך המצביעים.
2. אם איאפשר להקצות מקום למוצר חדש.

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


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eli-15 לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 25.9.03
19179 הודעות, 1 פידבק
   20:05   12.06.15   
אל הפורום  
  2. דבר ראשון תודה על התגובה המהירה  
בתגובה להודעה מספר 1
 
ערכתי לאחרונה בתאריך 12.06.15 בשעה 20:11 בברכה, eli-15
 
דבר שני , שכחתי להגיד פה שזה מבנה בתוך מבנה (כמו בתמונה)

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t34.0-12/11292800_1077869848894734_1328677667_n.jpg?oh=dc319b85bc6f0b7b63590325ed3af059&oe=557DD5C7&__gda__=1434240243_7333611559038209f477c6789cdbef6a

אז אני חושב שהאופציה השנייה שכתבת היא הנכונה פה

www.facebook.com/tnagarut

תעשיות נגרות
עיצוב וייצור ריהוט בהזמנה


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

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

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



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